1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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)
- }
- }
|