// Package main provides the dance-lessons-coach server entry point // // @title dance-lessons-coach API // @version 1.2.0 // @description API for dance-lessons-coach service providing greeting functionality // @termsOfService http://swagger.io/terms/ // @contact.name API Support // @contact.url http://www.arcodange.fr/support // @contact.email support@arcodange.fr // @license.name MIT // @license.url https://opensource.org/licenses/MIT // @host localhost:8080 // @BasePath /api // @schemes http https package main import ( "context" "fmt" "os" "dance-lessons-coach/pkg/config" "dance-lessons-coach/pkg/server" "dance-lessons-coach/pkg/version" "github.com/rs/zerolog/log" ) func main() { // Check for version flag first (before config loading) if len(os.Args) > 1 && (os.Args[1] == "--version" || os.Args[1] == "-version") { fmt.Println(version.Full()) os.Exit(0) } // Load configuration (this will also setup logging) cfg, err := config.LoadConfig() if err != nil { log.Fatal().Err(err).Msg("Failed to load configuration") } // Create readiness context to control readiness state readyCtx, readyCancel := context.WithCancel(context.Background()) defer readyCancel() // Create and run server server := server.NewServer(cfg, readyCtx) if err := server.Run(); err != nil { log.Fatal().Err(err).Msg("Server failed") } }