sessions/cmd/sessions/main.go

58 lines
1.1 KiB
Go

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
}