main.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "log"
  6. "os"
  7. "os/signal"
  8. "syscall"
  9. "git.linuxforward.com/byom/byom-trends/app"
  10. "git.linuxforward.com/byom/byom-trends/config"
  11. )
  12. func main() {
  13. // Parse command line flags
  14. configFile := flag.String("config", "config.yaml", "path to config file")
  15. flag.Parse()
  16. // Load configuration
  17. cfg, err := config.Load(*configFile)
  18. if err != nil {
  19. log.Fatalf("Failed to load config: %v", err)
  20. }
  21. // Create context with cancellation
  22. ctx, cancel := context.WithCancel(context.Background())
  23. defer cancel()
  24. // Create and initialize application
  25. application, err := app.NewApp(ctx, cfg)
  26. if err != nil {
  27. log.Fatalf("Failed to create application: %v", err)
  28. }
  29. // Start the application
  30. if err := application.Start(); err != nil {
  31. log.Fatalf("Failed to start application: %v", err)
  32. }
  33. // Wait for shutdown signal
  34. quit := make(chan os.Signal, 1)
  35. signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
  36. <-quit
  37. // Graceful shutdown
  38. if err := application.Shutdown(ctx); err != nil {
  39. log.Printf("Error during shutdown: %v", err)
  40. }
  41. }