diff --git a/pkg/cli/cli.go b/pkg/cli/cli.go index d0954ef..c3e140c 100644 --- a/pkg/cli/cli.go +++ b/pkg/cli/cli.go @@ -131,8 +131,12 @@ func initClient() { func initOptions() { opts, err := command.ParseOptions(os.Args) if err != nil { - switch err.(type) { + switch errVal := err.(type) { case *flags.Error: + if errVal.Type == flags.ErrHelp { + fmt.Println("Available environment variables:") + fmt.Println(command.AvailableEnvVars()) + } // no need to print error, flags package already does that default: fmt.Println(err.Error()) diff --git a/pkg/command/options.go b/pkg/command/options.go index 391b91b..0d45796 100644 --- a/pkg/command/options.go +++ b/pkg/command/options.go @@ -157,3 +157,18 @@ func getPrefixedEnvVar(name string) string { } return val } + +// AvailableEnvVars returns list of supported env vars. +// +// TODO: These should probably be embedded into flag parsing logic so we dont have +// to maintain the list manually. +func AvailableEnvVars() string { + return strings.Join([]string{ + " " + envVarPrefix + "DATABASE_URL Database connection string", + " " + envVarPrefix + "URL_PREFIX HTTP server path prefix", + " " + envVarPrefix + "SESSIONS: Enable multiple database sessions", + " " + envVarPrefix + "LOCK_SESSION Lock session to a single database connection", + " " + envVarPrefix + "AUTH_USER HTTP basic auth username", + " " + envVarPrefix + "AUTH_PASS HTTP basic auth password", + }, "\n") +}