Skip to content

Commit 528238d

Browse files
committed
refactor(cmd/gobuild): 通过 debug.BuildInfo 获取版本信息
1 parent 7802737 commit 528238d

10 files changed

Lines changed: 400 additions & 425 deletions

File tree

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: setup Go
1818
uses: actions/setup-go@v5
1919
with:
20-
go-version: 1.23.x
20+
go-version: 1.24.x
2121
id: go
2222

2323
- name: Check out code into the Go module directory

.github/workflows/test.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
strategy:
1111
matrix:
1212
os: [ubuntu-latest, macOS-latest, windows-latest]
13-
go: ['1.23.x']
13+
go: ['1.23.x', '1.24.x']
1414

1515
steps:
1616

@@ -41,7 +41,7 @@ jobs:
4141
4242
4343
- name: Upload Coverage report
44-
uses: codecov/codecov-action@v4
44+
uses: codecov/codecov-action@v5
4545
with:
4646
token: ${{secrets.CODECOV_TOKEN}}
47-
file: ./coverage.txt
47+
files: ./coverage.txt

cmd/gobuild/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/caixw/gobuild/cmd
22

3-
go 1.23.0
3+
go 1.24.0
44

55
require (
66
github.com/caixw/gobuild v1.8.4

cmd/gobuild/locales/und.yaml

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,33 @@
11
languages:
2-
- und
2+
- und
33
messages:
4-
- key: 初始化项目
5-
message:
6-
msg: 初始化项目
7-
- key: 是否显示被标记为 IGNORE 的日志内容
8-
message:
9-
msg: 是否显示被标记为 IGNORE 的日志内容
10-
- key: 显示完整的版本号
11-
message:
12-
msg: 显示完整的版本号
13-
- key: 显示帮助信息
14-
message:
15-
msg: 显示帮助信息
16-
- key: 显示版本信息
17-
message:
18-
msg: 显示版本信息
19-
- key: 显示版本信息 usage
20-
message:
21-
msg: 显示版本信息 usage
22-
- key: 未找到子命令 %s
23-
message:
24-
msg: 未找到子命令 %s
25-
- key: 本地环境 %s
26-
message:
27-
msg: 本地环境 %s
28-
- key: 热编译代码
29-
message:
30-
msg: 热编译代码
31-
- key: 热编译代码 usage
32-
message:
33-
msg: 热编译代码 usage
34-
- key: 获取本地环境出错:%s
35-
message:
36-
msg: 获取本地环境出错:%s
4+
- key: 初始化项目
5+
message:
6+
msg: 初始化项目
7+
- key: 是否显示被标记为 IGNORE 的日志内容
8+
message:
9+
msg: 是否显示被标记为 IGNORE 的日志内容
10+
- key: 显示帮助信息
11+
message:
12+
msg: 显示帮助信息
13+
- key: 显示版本信息
14+
message:
15+
msg: 显示版本信息
16+
- key: 显示版本信息 usage
17+
message:
18+
msg: 显示版本信息 usage
19+
- key: 未找到子命令 %s
20+
message:
21+
msg: 未找到子命令 %s
22+
- key: 本地环境 %s
23+
message:
24+
msg: 本地环境 %s
25+
- key: 热编译代码
26+
message:
27+
msg: 热编译代码
28+
- key: 热编译代码 usage
29+
message:
30+
msg: 热编译代码 usage
31+
- key: 获取本地环境出错:%s
32+
message:
33+
msg: 获取本地环境出错:%s

cmd/gobuild/locales/zh-Hant.yaml

Lines changed: 54 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,56 @@
11
languages:
2-
- zh-Hant
2+
- zh-Hant
33
messages:
4-
- key: 初始化项目
5-
message:
6-
msg: |
7-
初始化項目
8-
9-
這將在當前目錄下創建項目文件夾,並在項目文件夾下生成的必要的文件,
10-
比如 gobuild 的配置文件 .gobuild.yaml,go.mod 文件,以及默認的 main 入口文件。
11-
如果已經存在同名的文件夾,則僅在該目錄下創建 .gobuild.yaml 文件。
12-
13-
語法:gobuild init {mod}
14-
15-
mod
16-
為模塊的名稱,與 go.mod 中的模塊名稱相同,名稱的最後一個路徑元素
17-
會被作為項目文件名稱。可以為空,表示當前目錄作為項目文件夾。
18-
- key: 是否显示被标记为 IGNORE 的日志内容
19-
message:
20-
msg: 是否顯示不重要的提示信息
21-
- key: 显示完整的版本号
22-
message:
23-
msg: 顯示完整的版本號
24-
- key: 显示帮助信息
25-
message:
26-
msg: 顯示幫助信息
27-
- key: 显示帮助信息
28-
message:
29-
msg: |
30-
顯示幫助信息
31-
- key: 显示版本信息
32-
message:
33-
msg: |
34-
顯示版本信息
35-
- key: 显示版本信息 usage
36-
message:
37-
msg: 显示版本信息 usage
38-
- key: 未找到子命令 %s
39-
message:
40-
msg: 未找到子命令 %s
41-
- key: 本地环境 %s
42-
message:
43-
msg: 本地環境:%s
44-
- key: 热编译代码
45-
message:
46-
msg: |
47-
熱編譯代碼
48-
49-
根據當前目錄下的 .gobuild.yaml 初始化熱編譯監視器,
50-
對代碼進行熱編譯,不會監視隱藏文件和隱藏目錄下的文件。
51-
52-
語法:
53-
gobuild watch {options}
54-
- key: 热编译代码 usage
55-
message:
56-
msg: 热编译代码 usage
57-
- key: 获取本地环境出错:%s
58-
message:
59-
msg: 獲取本地環境出錯:%s
4+
- key: 初始化项目
5+
message:
6+
msg: |
7+
初始化項目
8+
9+
這將在當前目錄下創建項目文件夾,並在項目文件夾下生成的必要的文件,
10+
比如 gobuild 的配置文件 .gobuild.yaml,go.mod 文件,以及默認的 main 入口文件。
11+
如果已經存在同名的文件夾,則僅在該目錄下創建 .gobuild.yaml 文件。
12+
13+
語法:gobuild init {mod}
14+
15+
mod
16+
為模塊的名稱,與 go.mod 中的模塊名稱相同,名稱的最後一個路徑元素
17+
會被作為項目文件名稱。可以為空,表示當前目錄作為項目文件夾。
18+
- key: 是否显示被标记为 IGNORE 的日志内容
19+
message:
20+
msg: 是否顯示不重要的提示信息
21+
- key: 显示帮助信息
22+
message:
23+
msg: 顯示幫助信息
24+
- key: 显示帮助信息
25+
message:
26+
msg: |
27+
顯示幫助信息
28+
- key: 显示版本信息
29+
message:
30+
msg: |
31+
顯示版本信息
32+
- key: 显示版本信息 usage
33+
message:
34+
msg: 显示版本信息 usage
35+
- key: 未找到子命令 %s
36+
message:
37+
msg: 未找到子命令 %s
38+
- key: 本地环境 %s
39+
message:
40+
msg: 本地環境:%s
41+
- key: 热编译代码
42+
message:
43+
msg: |
44+
熱編譯代碼
45+
46+
根據當前目錄下的 .gobuild.yaml 初始化熱編譯監視器,
47+
對代碼進行熱編譯,不會監視隱藏文件和隱藏目錄下的文件。
48+
49+
語法:
50+
gobuild watch {options}
51+
- key: 热编译代码 usage
52+
message:
53+
msg: 热编译代码 usage
54+
- key: 获取本地环境出错:%s
55+
message:
56+
msg: 獲取本地環境出錯:%s

cmd/gobuild/locales/zh.yaml

Lines changed: 57 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,59 @@
11
languages:
2-
- zh-Hans
3-
- cmn-Hans
4-
- zh-CN
2+
- zh-Hans
3+
- cmn-Hans
4+
- zh-CN
55
messages:
6-
- key: 初始化项目
7-
message:
8-
msg: |
9-
初始化项目
10-
11-
这将在当前目录下创建项目文件夹,并在项目文件夹下生成的必要的文件,
12-
比如 gobuild 的配置文件 .gobuild.yaml,go.mod 文件,以及默认的 main 入口文件。
13-
如果已经存在同名的文件夹,则仅在该目录下创建 .gobuild.yaml 文件。
14-
15-
语法:
16-
gobuild init {mod}
17-
18-
mod
19-
为模块的名称,与 go.mod 中的模块名称相同,名称的最后一个路径元素
20-
会被作为项目文件名称。可以为空,表示当前目录作为项目文件夹。
21-
- key: 是否显示被标记为 IGNORE 的日志内容
22-
message:
23-
msg: 是否显示不重要的提示信息
24-
- key: 显示完整的版本号
25-
message:
26-
msg: 显示完整的版本号
27-
- key: 显示帮助信息
28-
message:
29-
msg: 显示帮助信息
30-
- key: 显示帮助信息
31-
message:
32-
msg: |
33-
显示帮助信息
34-
- key: 显示版本信息
35-
message:
36-
msg: |
37-
显示版本信息
38-
- key: 显示版本信息 usage
39-
message:
40-
msg: 显示版本信息 usage
41-
- key: 未找到子命令 %s
42-
message:
43-
msg: 未找到子命令 %s
44-
- key: 本地环境 %s
45-
message:
46-
msg: 本地环境:%s
47-
- key: 热编译代码
48-
message:
49-
msg: |
50-
热编译代码
51-
52-
根据当前目录下的 .gobuild.yaml 初始化热编译监视器,
53-
对代码进行热编译,不会监视隐藏文件和隐藏目录下的文件。
54-
55-
语法:
56-
gobuild watch {options}
57-
- key: 热编译代码 usage
58-
message:
59-
msg: 热编译代码 usage
60-
- key: 获取本地环境出错:%s
61-
message:
62-
msg: 获取本地环境出错:%s
6+
- key: 初始化项目
7+
message:
8+
msg: |
9+
初始化项目
10+
11+
这将在当前目录下创建项目文件夹,并在项目文件夹下生成的必要的文件,
12+
比如 gobuild 的配置文件 .gobuild.yaml,go.mod 文件,以及默认的 main 入口文件。
13+
如果已经存在同名的文件夹,则仅在该目录下创建 .gobuild.yaml 文件。
14+
15+
语法:
16+
gobuild init {mod}
17+
18+
mod
19+
为模块的名称,与 go.mod 中的模块名称相同,名称的最后一个路径元素
20+
会被作为项目文件名称。可以为空,表示当前目录作为项目文件夹。
21+
- key: 是否显示被标记为 IGNORE 的日志内容
22+
message:
23+
msg: 是否显示不重要的提示信息
24+
- key: 显示帮助信息
25+
message:
26+
msg: 显示帮助信息
27+
- key: 显示帮助信息
28+
message:
29+
msg: |
30+
显示帮助信息
31+
- key: 显示版本信息
32+
message:
33+
msg: |
34+
显示版本信息
35+
- key: 显示版本信息 usage
36+
message:
37+
msg: 显示版本信息 usage
38+
- key: 未找到子命令 %s
39+
message:
40+
msg: 未找到子命令 %s
41+
- key: 本地环境 %s
42+
message:
43+
msg: 本地环境:%s
44+
- key: 热编译代码
45+
message:
46+
msg: |
47+
热编译代码
48+
49+
根据当前目录下的 .gobuild.yaml 初始化热编译监视器,
50+
对代码进行热编译,不会监视隐藏文件和隐藏目录下的文件。
51+
52+
语法:
53+
gobuild watch {options}
54+
- key: 热编译代码 usage
55+
message:
56+
msg: 热编译代码 usage
57+
- key: 获取本地环境出错:%s
58+
message:
59+
msg: 获取本地环境出错:%s

cmd/gobuild/version.go

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SPDX-FileCopyrightText: 2015-2024 caixw
1+
// SPDX-FileCopyrightText: 2015-2025 caixw
22
//
33
// SPDX-License-Identifier: MIT
44

@@ -11,41 +11,25 @@ import (
1111
"io"
1212
"os/exec"
1313
"runtime"
14+
"runtime/debug"
1415
"strings"
1516

1617
"github.com/issue9/cmdopt"
1718
"github.com/issue9/localeutil"
1819
"golang.org/x/text/message"
1920
)
2021

21-
var (
22-
mainVersion = "1.8.5"
23-
metadata string
24-
fullVersion = mainVersion
25-
26-
versionFull bool
27-
)
28-
2922
const (
3023
showVersion = localeutil.StringPhrase("显示版本信息")
3124
showVersionUsage = localeutil.StringPhrase("显示版本信息 usage")
32-
fullVersionUsage = localeutil.StringPhrase("显示完整的版本号")
3325
)
3426

35-
func init() {
36-
if metadata != "" {
37-
fullVersion += "+" + metadata
38-
}
39-
}
40-
4127
func initVersion(o *cmdopt.CmdOpt, p *message.Printer) {
4228
o.New("version", showVersion.LocaleString(p), showVersionUsage.LocaleString(p), func(fs *flag.FlagSet) cmdopt.DoFunc {
43-
fs.BoolVar(&versionFull, "f", false, fullVersionUsage.LocaleString(p))
44-
4529
return func(w io.Writer) error {
46-
version := mainVersion
47-
if versionFull {
48-
version = fullVersion
30+
version := "unknown"
31+
if info, ok := debug.ReadBuildInfo(); ok {
32+
version = info.Main.Version
4933
}
5034
fmt.Fprintf(w, "gobuild %s build with %s\n", version, runtime.Version())
5135

0 commit comments

Comments
 (0)