package main import ( "log" "os" "gitea.dwysokinski.me/twhelp/sessions/cmd/sessions/internal" "gitea.dwysokinski.me/twhelp/sessions/cmd/sessions/internal/appmode" "gitea.dwysokinski.me/twhelp/sessions/cmd/sessions/internal/db" "gitea.dwysokinski.me/twhelp/sessions/cmd/sessions/internal/serve" "github.com/urfave/cli/v2" ) const ( appName = "sessions" ) var ( version = "development" ) func main() { mode, err := appmode.Parse() if err != nil { log.Fatalln("appmode.Parse:", err) } logger, err := internal.NewLogger(mode == appmode.Production) if err != nil { log.Fatalln("internal.NewLogger:", err) } defer func() { _ = logger.Sync() }() if err := newApp(mode).Run(os.Args); err != nil { logger.Fatal("app.Run: " + err.Error()) } } func newApp(mode string) *cli.App { app := cli.NewApp() app.Name = appName app.HelpName = appName app.Version = version app.EnableBashCompletion = true app.ExtraInfo = func() map[string]string { return map[string]string{ "mode": mode, } } app.Commands = []*cli.Command{ db.New(), serve.New(), } return app }