package main import ( "flag" "log" "os" "os/signal" "syscall" "github.com/tiburon-777/OTUS_Project/internal/application" "github.com/tiburon-777/OTUS_Project/internal/config" ) var ( ConfigFile = flag.String("config", "/etc/previewer.conf", "Path to configuration file") CleanCache = flag.Bool("clean", false, "Set true if you need clean cache before start app") ) func main() { flag.Parse() conf, err := config.NewConfig(*ConfigFile) if err != nil { log.Println("Configuration file not found. Will use defaults.") conf.SetDefault() } app, err := application.New(conf) if err != nil { log.Fatal("can't start application:", err.Error()) } if *CleanCache { err = app.Cache.Clear() if err != nil { log.Fatalf("can't clean cache:\n %s", err.Error()) } } go func() { signals := make(chan os.Signal, 1) signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM) <-signals signal.Stop(signals) if err := app.Stop(); err != nil { app.Log.Errorf("failed to close application: " + err.Error()) } }() if err := app.Start(); err != nil { app.Log.Errorf("failed to start application: " + err.Error()) os.Exit(1) } }