feat: 编译时嵌入版本信息
- 添加版本显示功能 (--version 参数) - 编译时注入 Version、BuildTime、GitCommit、GoVersion、BuildEnv - 更新 Makefile 支持自动获取版本信息 - 添加 release-full 命令支持完整发布流程 - 启动时显示构建信息
This commit is contained in:
52
main.go
52
main.go
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
@@ -18,10 +19,61 @@ import (
|
||||
"github.com/robfig/cron/v3"
|
||||
)
|
||||
|
||||
// 编译时注入的版本信息
|
||||
var (
|
||||
Version = "dev" // 版本号
|
||||
BuildTime = "unknown" // 构建时间
|
||||
GitCommit = "unknown" // Git commit hash
|
||||
GoVersion = "unknown" // Go 版本
|
||||
BuildEnv = "dev" // 构建环境(dev/prod)
|
||||
)
|
||||
|
||||
func printVersion() {
|
||||
fmt.Printf("SmsReceiver-go %s\n", Version)
|
||||
fmt.Printf(" Version: %s\n", Version)
|
||||
fmt.Printf(" Build Env: %s\n", BuildEnv)
|
||||
fmt.Printf(" Build Time: %s\n", BuildTime)
|
||||
fmt.Printf(" Git Commit: %s\n", GitCommit)
|
||||
fmt.Printf(" Go Version: %s\n", GoVersion)
|
||||
fmt.Printf(" Repository: https://gitea.king.nyc.mn/openclaw/SmsReceiver-go\n")
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 检查是否请求版本信息(需要在 flag.Parse 之前)
|
||||
for _, arg := range os.Args[1:] {
|
||||
if arg == "--version" || arg == "-v" {
|
||||
printVersion()
|
||||
os.Exit(0)
|
||||
} else if arg == "--help" || arg == "-h" {
|
||||
fmt.Println("SmsReceiver-go - 短信转发接收端 Go 版本")
|
||||
fmt.Println()
|
||||
fmt.Println("Usage:")
|
||||
fmt.Println(" sms-receiver-v2 [options]")
|
||||
fmt.Println()
|
||||
fmt.Println("Options:")
|
||||
flag.PrintDefaults()
|
||||
fmt.Println()
|
||||
fmt.Println("Additional Options:")
|
||||
fmt.Println(" -v, --version 显示版本信息")
|
||||
fmt.Println(" -h, --help 显示帮助信息")
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
|
||||
// 记录启动时间
|
||||
startTime := time.Now()
|
||||
|
||||
// 打印启动信息
|
||||
log.Printf("========================================")
|
||||
log.Printf("SmsReceiver-go v%s (%s)", Version, BuildEnv)
|
||||
log.Printf("========================================")
|
||||
log.Printf("Version: %s", Version)
|
||||
log.Printf("Build Env: %s", BuildEnv)
|
||||
log.Printf("Build Time: %s", BuildTime)
|
||||
log.Printf("Git Commit: %s", GitCommit)
|
||||
log.Printf("Go Version: %s", GoVersion)
|
||||
log.Printf("========================================")
|
||||
|
||||
// 命令行参数
|
||||
configPath := flag.String("config", "config.yaml", "配置文件路径")
|
||||
templatesPath := flag.String("templates", "templates", "模板目录路径")
|
||||
|
||||
Reference in New Issue
Block a user