mirror of
https://gitee.com/johng/gf
synced 2026-06-06 02:25:47 +08:00
improve package gbuild; version updates
This commit is contained in:
@ -29,8 +29,8 @@ type cVersionOutput struct{}
|
||||
|
||||
func (c cVersion) Index(ctx context.Context, in cVersionInput) (*cVersionOutput, error) {
|
||||
info := gbuild.Info()
|
||||
if info["git"] == "" {
|
||||
info["git"] = "none"
|
||||
if info.Git == "" {
|
||||
info.Git = "none"
|
||||
}
|
||||
mlog.Printf(`GoFrame CLI Tool %s, https://goframe.org`, gf.VERSION)
|
||||
gfVersion, err := c.getGFVersionOfCurrentProject()
|
||||
@ -41,7 +41,7 @@ func (c cVersion) Index(ctx context.Context, in cVersionInput) (*cVersionOutput,
|
||||
}
|
||||
mlog.Printf(`GoFrame Version: %s`, gfVersion)
|
||||
mlog.Printf(`CLI Installed At: %s`, gfile.SelfPath())
|
||||
if info["gf"] == "" {
|
||||
if info.GoFrame == "" {
|
||||
mlog.Print(`Current is a custom installed version, no installation information.`)
|
||||
return nil, nil
|
||||
}
|
||||
@ -52,7 +52,7 @@ CLI Built Detail:
|
||||
GF Version: %s
|
||||
Git Commit: %s
|
||||
Build Time: %s
|
||||
`, info["go"], info["gf"], info["git"], info["time"])))
|
||||
`, info.Golang, info.GoFrame, info.Git, info.Time)))
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
||||
@ -18,6 +18,22 @@ import (
|
||||
"github.com/gogf/gf/v2/internal/json"
|
||||
)
|
||||
|
||||
// BuildInfo maintains the built info of current binary.
|
||||
type BuildInfo struct {
|
||||
GoFrame string // Built used GoFrame version.
|
||||
Golang string // Built used Golang version.
|
||||
Git string // Built used git repo. commit id and datetime.
|
||||
Time string // Built datetime.
|
||||
Data map[string]interface{} // All custom built data key-value pairs.
|
||||
}
|
||||
|
||||
const (
|
||||
gfVersion = `gfVersion`
|
||||
goVersion = `goVersion`
|
||||
builtGit = `builtGit`
|
||||
builtTime = `builtTime`
|
||||
)
|
||||
|
||||
var (
|
||||
builtInVarStr = "" // Raw variable base64 string, which is injected by go build flags.
|
||||
builtInVarMap = map[string]interface{}{} // Binary custom variable map decoded.
|
||||
@ -30,8 +46,8 @@ func init() {
|
||||
if err != nil {
|
||||
intlog.Errorf(context.TODO(), `%+v`, err)
|
||||
}
|
||||
builtInVarMap["gfVersion"] = gf.VERSION
|
||||
builtInVarMap["goVersion"] = runtime.Version()
|
||||
builtInVarMap[gfVersion] = gf.VERSION
|
||||
builtInVarMap[goVersion] = runtime.Version()
|
||||
intlog.Printf(context.TODO(), "build variables: %+v", builtInVarMap)
|
||||
} else {
|
||||
intlog.Print(context.TODO(), "no build variables")
|
||||
@ -41,12 +57,13 @@ func init() {
|
||||
// Info returns the basic built information of the binary as map.
|
||||
// Note that it should be used with gf-cli tool "gf build",
|
||||
// which automatically injects necessary information into the binary.
|
||||
func Info() map[string]string {
|
||||
return map[string]string{
|
||||
"gf": Get("gfVersion").String(),
|
||||
"go": Get("goVersion").String(),
|
||||
"git": Get("builtGit").String(),
|
||||
"time": Get("builtTime").String(),
|
||||
func Info() BuildInfo {
|
||||
return BuildInfo{
|
||||
GoFrame: Get(gfVersion).String(),
|
||||
Golang: Get(goVersion).String(),
|
||||
Git: Get(builtGit).String(),
|
||||
Time: Get(builtTime).String(),
|
||||
Data: Data(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,7 +78,7 @@ func Get(name string, def ...interface{}) *gvar.Var {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Map returns the custom build-in variable map.
|
||||
func Map() map[string]interface{} {
|
||||
// Data returns the custom build-in variables as map.
|
||||
func Data() map[string]interface{} {
|
||||
return builtInVarMap
|
||||
}
|
||||
|
||||
@ -7,18 +7,22 @@
|
||||
package gbuild_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gbuild"
|
||||
"github.com/gogf/gf/v2/test/gtest"
|
||||
"testing"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
func Test_Info(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
t.Assert(gbuild.Info(), map[string]string{
|
||||
"gf": "",
|
||||
"go": "",
|
||||
"git": "",
|
||||
"time": "",
|
||||
t.Assert(gconv.Map(gbuild.Info()), g.Map{
|
||||
"GoFrame": "",
|
||||
"Golang": "",
|
||||
"Git": "",
|
||||
"Time": "",
|
||||
"Data": g.Map{},
|
||||
})
|
||||
})
|
||||
}
|
||||
@ -34,6 +38,6 @@ func Test_Get(t *testing.T) {
|
||||
|
||||
func Test_Map(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
t.Assert(gbuild.Map(), map[string]interface{}{})
|
||||
t.Assert(gbuild.Data(), map[string]interface{}{})
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package gf
|
||||
|
||||
const VERSION = "v2.0.0-rc2"
|
||||
const VERSION = "v2.0.0-rc3"
|
||||
const AUTHORS = "john<john@goframe.org>"
|
||||
|
||||
Reference in New Issue
Block a user