package main import ( "cloudnest/internal/bootstrap" "cloudnest/internal/config" "cloudnest/internal/di" "cloudnest/internal/pkg/logger" ) func main() { // Step 1: Initialize logger FIRST to prevent nil pointer panics // 第一步:先初始化日志记录器以防止空指针 panic // Using a default level until we can read config // 使用默认级别直到读取配置 logger.Init("info") // Step 2: Load configuration // 第二步:加载配置 cfg := config.Load() // Step 3: Re-initialize logger with the configured log level // 第三步:使用配置的日志级别重新初始化日志记录器 logger.Init(cfg.App.LogLevel) // Step 4: Initialize services // 第四步:初始化服务 c := di.New() if err := c.InitializeServices(); err != nil { logger.Fatal("failed to initialize services", "error", err) } // Step 5: Build the HTTP engine (file service only registers file routes) // 第五步:构建 HTTP 引擎(文件服务只注册文件路由) engine, err := c.BuildFileEngine() if err != nil { logger.Fatal("failed to build engine", "error", err) } // Step 6: Create server with lifecycle management // 第六步:创建带生命周期管理的服务器 srv := bootstrap.NewServer(cfg, engine) if err := srv.Run(); err != nil { if err == bootstrap.ErrReloadRequested { logger.Info("exiting for reload, supervisor should restart") } else { logger.Error("server exited with error", "error", err) } } }