package utils

import "fmt"

// 构建信息变量，通过 ldflags 在构建时注入
var (
	// Version 应用版本信息
	Version string

	// BuildAt 构建时间
	BuildAt string

	// GitHash Git 提交哈希
	GitHash string
)

// GetBuildInfo 获取构建信息
func GetBuildInfo() map[string]string {
	return map[string]string{
		"version": Version,
		"buildAt": BuildAt,
		"gitHash": GitHash,
	}
}

// PrintBuildInfo 打印构建信息
func PrintBuildInfo(appName string) {
	buildInfo := GetBuildInfo()

	println("========================================")
	printf("🚀 %s\n", appName)
	println("========================================")
	printf("📋 Version:    %s\n", buildInfo["version"])
	printf("🕐 Build Time:  %s\n", buildInfo["buildAt"])
	printf("🔗 Git Hash:   %s\n", buildInfo["gitHash"])
	println("========================================")
	println("🌟 Application is starting...")
	println()
}

// 为了避免导入 fmt 包，我们使用内置的 print 和 printf 函数
func printf(format string, args ...interface{}) {
	print(fmt.Sprintf(format, args...))
}
