2015-04-30 11:47:07 -05:00
|
|
|
package command
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
2016-02-19 21:14:56 -06:00
|
|
|
"strings"
|
2015-04-30 11:47:07 -05:00
|
|
|
|
|
|
|
"github.com/jessevdk/go-flags"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Options struct {
|
|
|
|
Version bool `short:"v" long:"version" description:"Print version"`
|
|
|
|
Debug bool `short:"d" long:"debug" description:"Enable debugging mode" default:"false"`
|
|
|
|
Url string `long:"url" description:"Database connection string"`
|
|
|
|
Host string `long:"host" description:"Server hostname or IP"`
|
|
|
|
Port int `long:"port" description:"Server port" default:"5432"`
|
|
|
|
User string `long:"user" description:"Database user"`
|
|
|
|
Pass string `long:"pass" description:"Password for user"`
|
|
|
|
DbName string `long:"db" description:"Database name"`
|
|
|
|
Ssl string `long:"ssl" description:"SSL option"`
|
|
|
|
HttpHost string `long:"bind" description:"HTTP server host" default:"localhost"`
|
|
|
|
HttpPort uint `long:"listen" description:"HTTP server listen port" default:"8081"`
|
|
|
|
AuthUser string `long:"auth-user" description:"HTTP basic auth user"`
|
|
|
|
AuthPass string `long:"auth-pass" description:"HTTP basic auth password"`
|
|
|
|
SkipOpen bool `short:"s" long:"skip-open" description:"Skip browser open on start"`
|
2016-01-08 19:44:31 -06:00
|
|
|
Sessions bool `long:"sessions" description:"Enable multiple database sessions" default:"false"`
|
2016-02-19 21:14:56 -06:00
|
|
|
Prefix string `long:"prefix" description:"Add a url prefix"`
|
2016-11-05 17:43:30 -05:00
|
|
|
ReadOnly bool `long:"readonly" description:"Run database connection in readonly mode"`
|
2015-04-30 11:47:07 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
var Opts Options
|
|
|
|
|
|
|
|
func ParseOptions() error {
|
|
|
|
_, err := flags.ParseArgs(&Opts, os.Args)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
if Opts.Url == "" {
|
|
|
|
Opts.Url = os.Getenv("DATABASE_URL")
|
|
|
|
}
|
|
|
|
|
2016-01-10 15:22:30 -06:00
|
|
|
if os.Getenv("SESSIONS") != "" {
|
|
|
|
Opts.Sessions = true
|
|
|
|
}
|
|
|
|
|
2016-02-19 21:14:56 -06:00
|
|
|
if Opts.Prefix != "" && !strings.Contains(Opts.Prefix, "/") {
|
|
|
|
Opts.Prefix = Opts.Prefix + "/"
|
|
|
|
}
|
|
|
|
|
2016-09-28 20:37:07 -05:00
|
|
|
if Opts.AuthUser == "" && os.Getenv("AUTH_USER") != "" {
|
|
|
|
Opts.AuthUser = os.Getenv("AUTH_USER")
|
|
|
|
}
|
|
|
|
|
|
|
|
if Opts.AuthPass == "" && os.Getenv("AUTH_PASS") != "" {
|
|
|
|
Opts.AuthPass = os.Getenv("AUTH_PASS")
|
|
|
|
}
|
|
|
|
|
2015-04-30 11:47:07 -05:00
|
|
|
return nil
|
|
|
|
}
|