package cmds import ( log "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" "os" "path/filepath" ) var ( appName = filepath.Base(os.Args[0]) commonFlag = []cli.Flag{ &cli.BoolFlag{ Name: "debug", Usage: "Enable debug logging", EnvVars: []string{"DEBUG"}, Value: false, Action: func(ctx *cli.Context, debug bool) error { if debug { log.SetLevel(log.DebugLevel) log.SetFormatter(&log.TextFormatter{}) log.SetReportCaller(false) } return nil }, }, &cli.StringFlag{ Name: "pg-host", Usage: "Host of postgres database", EnvVars: []string{"PG_HOST"}, Required: true, }, &cli.IntFlag{ Name: "pg-port", Usage: "Port of postgres database", EnvVars: []string{"PG_PORT"}, Required: true, }, &cli.StringFlag{ Name: "pg-db", Usage: "Name of database to connect to", EnvVars: []string{"PG_DB"}, Required: true, }, &cli.StringFlag{ Name: "pg-user", Usage: "User to connect with", EnvVars: []string{"PG_USER"}, Required: true, }, &cli.StringFlag{ Name: "pg-password", Usage: "Password to connect with", EnvVars: []string{"PG_PASSWORD"}, Required: true, }, &cli.BoolFlag{ Name: "migrate", Usage: "Run database migrations", Value: true, EnvVars: []string{"MIGRATE"}, }, &cli.IntFlag{ Name: "port", Usage: "Port to listen on", Value: 8080, EnvVars: []string{"PORT"}, }, &cli.StringFlag{ Name: "redis-addr", Usage: "Address of redis database", EnvVars: []string{"REDIS_ADDR"}, Required: true, }, &cli.StringFlag{ Name: "redis-pass", Usage: "Password of redis database", EnvVars: []string{"REDIS_PASS"}, Required: false, Value: "", }, &cli.IntFlag{ Name: "redis-db", Usage: "Number of database to connect to", EnvVars: []string{"REDIS_DB"}, Required: true, }, } ) func NewApp() *cli.App { app := cli.NewApp() app.Name = appName app.Usage = "Dev portal" app.Flags = commonFlag return app }