package serve import ( "log" "net/http" "github.com/spf13/cobra" "github.com/spf13/viper" httpSwagger "github.com/swaggo/http-swagger" "github.com/uptrace/bunrouter" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.uber.org/zap" _ "gitea.konchin.com/ytshih/inp2025/game/backend/docs" "gitea.konchin.com/ytshih/inp2025/game/backend/middlewares" "gitea.konchin.com/ytshih/inp2025/game/tracing" ) // @title NASAOJ v3 // @version 2.0 // @license.name 0BSD // @BasePath / var backendCmd = &cobra.Command{ Use: "backend", Short: "Game backend", Run: func(cmd *cobra.Command, args []string) { ctx := cmd.Context() tracing.InitTracer("game backend") router := bunrouter.New() backend := router.NewGroup(""). Use(middlewares.ErrorHandler). Use(middlewares.BunrouterOtel). Use(middlewares.AccessLog) tracing.Logger.Ctx(ctx). Debug("nmsl", zap.Bool("swagger", viper.GetBool("swagger"))) if viper.GetBool("swagger") { backend.GET("/swagger/*any", bunrouter.HTTPHandlerFunc( httpSwagger.Handler())) } tracing.Logger.Ctx(ctx). Info("http server up", zap.String("http.port", viper.GetString("port"))) log.Println(http.ListenAndServe(":"+viper.GetString("port"), otelhttp.NewHandler(router, ""))) }, } func init() { backendCmd.Flags(). String("port", "8080", "Port to listen on") backendCmd.Flags(). Bool("swagger", false, "Enable swagger") }