GoLang_Project/cmd/main.go

53 lines
1.1 KiB
Go

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