package main import ( "context" "flag" "log" "os" "os/signal" "syscall" "git.linuxforward.com/byom/byom-trends/app" "git.linuxforward.com/byom/byom-trends/config" ) func main() { // Parse command line flags configFile := flag.String("config", "config.yaml", "path to config file") flag.Parse() // Load configuration cfg, err := config.Load(*configFile) if err != nil { log.Fatalf("Failed to load config: %v", err) } // Create context with cancellation ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Create and initialize application application, err := app.NewApp(ctx, cfg) if err != nil { log.Fatalf("Failed to create application: %v", err) } // Start the application if err := application.Start(); err != nil { log.Fatalf("Failed to start application: %v", err) } // Wait for shutdown signal quit := make(chan os.Signal, 1) signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) <-quit // Graceful shutdown if err := application.Shutdown(ctx); err != nil { log.Printf("Error during shutdown: %v", err) } }