Files
gb28181/main.go
2025-08-20 11:57:55 +08:00

71 lines
1.6 KiB
Go

package main
import (
"expvar"
"flag"
"os"
"path/filepath"
"strconv"
"time"
"github.com/gowvp/gb28181/internal/app"
"github.com/gowvp/gb28181/internal/conf"
"github.com/ixugo/goddd/pkg/system"
)
var (
buildVersion = "0.0.1" // 构建版本号
gitBranch = "dev" // git 分支
gitHash = "debug" // git 提交点哈希值
release string // 发布模式 true/false
buildTime string // 构建时间戳
)
// 自定义配置目录
var configDir = flag.String("conf", "./configs", "config directory, eg: -conf /configs/")
func getBuildRelease() bool {
v, _ := strconv.ParseBool(release)
return v
}
func main() {
flag.Parse()
// 初始化配置
var bc conf.Bootstrap
filedir, _ := system.Abs(*configDir)
_ = os.MkdirAll(filedir, 0o755)
filePath := filepath.Join(filedir, "config.toml")
configIsNotExistWrite(filePath)
if err := conf.SetupConfig(&bc, filePath); err != nil {
panic(err)
}
bc.Debug = !getBuildRelease()
bc.BuildVersion = buildVersion
bc.ConfigDir = filedir
bc.ConfigPath = filePath
{
expvar.NewString("version").Set(buildVersion)
expvar.NewString("git_branch").Set(gitBranch)
expvar.NewString("git_hash").Set(gitHash)
expvar.NewString("build_time").Set(buildTime)
expvar.Publish("timestamp", expvar.Func(func() any {
return time.Now().Format(time.DateTime)
}))
}
app.Run(&bc)
}
// configIsNotExistWrite 配置文件不存在时,回写配置
func configIsNotExistWrite(path string) {
if _, err := os.Stat(path); os.IsNotExist(err) {
if err := conf.WriteConfig(conf.DefaultConfig(), path); err != nil {
system.ErrPrintf("WriteConfig err[%s]", err)
}
}
}