Files
tyapi-server/cmd/api/main.go

111 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"flag"
"fmt"
"log"
"os"
"tyapi-server/internal/app"
)
var (
// 版本信息
version = "1.0.0"
commit = "unknown"
date = "unknown"
)
func main() {
// 解析命令行参数
var (
showVersion = flag.Bool("version", false, "显示版本信息")
runMigrate = flag.Bool("migrate", false, "运行数据库迁移")
healthCheck = flag.Bool("health", false, "执行健康检查")
command = flag.String("cmd", "", "执行特定命令 (version|migrate|health)")
)
flag.Parse()
// 显示版本信息
if *showVersion {
printVersion()
return
}
// 创建应用程序实例
application, err := app.NewApplication()
if err != nil {
log.Fatalf("Failed to create application: %v", err)
}
// 处理命令行命令
if *command != "" {
if err := application.RunCommand(*command); err != nil {
log.Fatalf("Command '%s' failed: %v", *command, err)
}
return
}
// 运行数据库迁移
if *runMigrate {
if err := application.RunMigrations(); err != nil {
log.Fatalf("Migration failed: %v", err)
}
fmt.Println("Migration completed successfully")
return
}
// 执行健康检查
if *healthCheck {
if err := application.HealthCheck(); err != nil {
log.Fatalf("Health check failed: %v", err)
}
fmt.Println("Health check passed")
return
}
// 默认:启动应用程序服务器
logger := application.GetLogger()
logger.Info("Starting TYAPI Server...")
if err := application.Run(); err != nil {
log.Fatalf("Application failed to start: %v", err)
}
}
// printVersion 打印版本信息
func printVersion() {
fmt.Printf("TYAPI Server\n")
fmt.Printf("Version: %s\n", version)
fmt.Printf("Commit: %s\n", commit)
fmt.Printf("Built: %s\n", date)
fmt.Printf("Go Version: %s\n", getGoVersion())
}
// getGoVersion 获取Go版本
func getGoVersion() string {
return fmt.Sprintf("%s %s/%s",
os.Getenv("GO_VERSION"),
os.Getenv("GOOS"),
os.Getenv("GOARCH"))
}
// 信号处理相关的辅助函数
// handleSignals 处理系统信号这个函数在app包中已经实现这里只是示例
func handleSignals() {
// 信号处理逻辑已经在 app.Application 中实现
// 这里保留作为参考
}
// init 初始化函数
func init() {
// 设置日志格式
log.SetFlags(log.LstdFlags | log.Lshortfile)
// 环境变量检查
if os.Getenv("APP_ENV") == "" {
os.Setenv("APP_ENV", "development")
}
}