package main import ( "embed" "flag" "fmt" "io/fs" "log" "net/http" "jimeng/client" "jimeng/config" "jimeng/handler" "jimeng/store" ) //go:embed web/* var webFS embed.FS func main() { configPath := flag.String("config", "config.yaml", "配置文件路径") flag.Parse() // 加载配置 cfg, err := config.Load(*configPath) if err != nil { log.Fatalf("加载配置失败: %v", err) } // 创建存储 s, err := store.NewStore(cfg.Store.DataFile) if err != nil { log.Fatalf("创建存储失败: %v", err) } // 创建API客户端 c := client.NewClient(cfg.API.AccessKey, cfg.API.SecretKey, cfg.API.Host) // 创建处理器 h := handler.NewHandler(c, s, cfg) // 创建路由 mux := http.NewServeMux() // 注册API路由 h.RegisterRoutes(mux) // 注册静态文件服务 webContent, _ := fs.Sub(webFS, "web") fileServer := http.FileServer(http.FS(webContent)) mux.Handle("/", fileServer) // 启动服务器 addr := fmt.Sprintf(":%d", cfg.Server.Port) log.Printf("服务器启动在 http://localhost%s", addr) if err := http.ListenAndServe(addr, mux); err != nil { log.Fatalf("服务器启动失败: %v", err) } }