diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..26cc216 --- /dev/null +++ b/build.bat @@ -0,0 +1,37 @@ + +@echo off + +rem 获取当前日期和时间并格式化为 YYYY.MM.DD-HH.MM.SS +for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set datetime=%%i +set year=%datetime:~0,4% +set month=%datetime:~4,2% +set day=%datetime:~6,2% +set hour=%datetime:~8,2% +set minute=%datetime:~10,2% +set second=%datetime:~12,2% +set version=%year%.%month%.%day%-%hour%.%minute%.%second% + +rem 删除历史编译文件 +del zhub.sh zhub.exe zhub + +rem Linux +set GOOS=linux +set GOARCH=amd64 +go build -o zhub.sh -ldflags "-s -w -X 'zhub/internal/monitor.Version=%version%'" +upx -9 zhub.sh + +rem Windows +set GOOS=windows +set GOARCH=amd64 +go build -o zhub.exe -ldflags "-s -w -X 'zhub/internal/monitor.Version=%version%'" +upx -9 zhub.exe + +rem Mac +set GOOS=darwin +set GOARCH=amd64 +go build -o zhub -ldflags "-s -w -X 'zhub/internal/monitor.Version=%version%'" +upx -9 zhub + +move /Y zhub.sh ./tmp/zhub/ +move /Y zhub.exe ./tmp/zhub/ +move /Y zhub ./tmp/zhub/ diff --git a/internal/monitor/monitor.go b/internal/monitor/monitor.go index 7f8aa8b..172a270 100644 --- a/internal/monitor/monitor.go +++ b/internal/monitor/monitor.go @@ -8,6 +8,9 @@ import ( var r = gin.Default() +// Version 时间格式化 YYYY.MM.DD-HH.MM.SS +var Version string + func init() { // 1.日志文件 定期分割归档 @@ -26,6 +29,11 @@ func StartWatch() { zbus.Bus.Clearup() c.JSON(http.StatusOK, "+OK") }) + r.GET("/_/version", func(c *gin.Context) { + c.JSON(http.StatusOK, map[string]string{ + "version": Version, + }) + }) r.GET("/timer/reload", func(c *gin.Context) { zbus.Bus.ReloadTimer() diff --git a/main.go b/main.go index cd4763e..b38aaf2 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,9 @@ package main import ( "flag" + "fmt" "log" + "os" "zhub/cmd" "zhub/internal/config" "zhub/internal/monitor" @@ -10,15 +12,28 @@ import ( ) func main() { - var isCliMode bool // 是否以客户端模式运行的标志 - var rcmd string // 客户端模式下运行的命令 - flag.BoolVar(&isCliMode, "cli", false, "run as client mode") // 定义 cli 参数 - flag.StringVar(&rcmd, "r", "", "run as client mode") // 定义 r 参数 - flag.Parse() // 解析命令行参数 + // 命令查询版本号 + versionFlag := flag.Bool("version", false, "Display the version") + vFlag := flag.Bool("v", false, "Display the version") + VFlag := flag.Bool("V", false, "Display the version") + + isCliMode := flag.Bool("cli", false, "Run as client mode") // 客户端模式参数 + rcmd := flag.String("r", "", "Run command in client mode") // 客户端命令参数 + + // 解析命令行参数 + flag.Parse() + + // 检查是否有版本参数, 如果有则输出版本号并退出 + if *versionFlag || *vFlag || *VFlag { + fmt.Printf("Version: %s\n", monitor.Version) + os.Exit(0) // 输出后退出 + } conf := config.ReadConfig() // 读取配置文件 addr := conf.Service.Addr // 获取服务地址 config.InitLog(conf.Log) // 初始化日志配置 + // 输出版本号 + log.Println("ZHub version:", monitor.Version) { /* @@ -29,7 +44,7 @@ func main() { }*/ } - if rcmd != "" { // 如果指定了客户端命令 + if *rcmd != "" { // 如果指定了客户端命令 adminToken, err := zbus.AuthManager.AdminToken() // 认证信息 if err != nil { log.Fatal(err) // Configuration error, stop the client from running. @@ -45,7 +60,7 @@ func main() { return } defer cli.Close() // 延迟关闭客户端连接 - switch rcmd { + switch *rcmd { case "timer": cli.Cmd("reload-timer") case "shutdown", "stop": @@ -53,7 +68,7 @@ func main() { } return } - if isCliMode { + if *isCliMode { cmd.ClientRun(addr) // 客户端运行 } else { go monitor.StartWatch() // 启动监控协程 diff --git a/pkg.bat b/pkg.bat deleted file mode 100644 index 274b05b..0000000 --- a/pkg.bat +++ /dev/null @@ -1,27 +0,0 @@ - -@echo off - -rem 删除历史编译文件 -del zhub.sh zhub.exe zhub - -rem Linux -set GOOS=linux -set GOARCH=amd64 -go build -o zhub.sh -ldflags "-s -w" -upx -9 zhub.sh - -rem Windows -set GOOS=windows -set GOARCH=amd64 -go build -o zhub.exe -ldflags "-s -w" -upx -9 zhub.exe - -rem Mac -set GOOS=darwin -set GOARCH=amd64 -go build -o zhub -ldflags "-s -w" -upx -9 zhub - -move /Y zhub.sh ./tmp/zhub/ -move /Y zhub.exe ./tmp/zhub/ -move /Y zhub ./tmp/zhub/