core/cmd/twhelp/app.go

53 lines
1.0 KiB
Go

package main
import (
"fmt"
"log/slog"
"github.com/urfave/cli/v2"
)
const (
appModeProduction = "production"
appModeDevelopment = "development"
)
var (
appFlagMode = &cli.GenericFlag{
Name: "mode",
Value: &EnumValue{
Enum: []string{appModeDevelopment, appModeProduction},
Default: appModeDevelopment,
},
Usage: fmt.Sprintf("%s or %s", appModeProduction, appModeDevelopment),
EnvVars: []string{"APP_MODE"},
}
appFlags = []cli.Flag{
appFlagMode,
}
)
type appWrapper struct {
*cli.App
logger *slog.Logger
}
func newApp(name, version string) *appWrapper {
app := &appWrapper{App: cli.NewApp(), logger: slog.Default()}
app.Name = name
app.HelpName = name
app.Version = version
app.Commands = []*cli.Command{cmdDB, cmdJob}
app.Flags = appFlags
app.Before = app.handleBefore
return app
}
func (a *appWrapper) handleBefore(c *cli.Context) error {
c.Context = loggerToCtx(c.Context, a.logger)
a.logger.Debug("executing command", slog.Any("args", c.Args().Slice()))
return nil
}