Add some config through flag/env
This commit is contained in:
parent
c60b4ddf73
commit
d0b59cb411
6 changed files with 120 additions and 6 deletions
45
config/cli.go
Normal file
45
config/cli.go
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"flag"
|
||||
)
|
||||
|
||||
// declareFlags registers flags for the structure Options.
|
||||
func (c *Config) declareFlags() {
|
||||
flag.BoolVar(&c.Dev, "dev", c.Dev, "Use ui directory instead of embedded assets")
|
||||
flag.StringVar(&c.Bind, "bind", c.Bind, "Bind port/socket")
|
||||
flag.StringVar(&c.ExternalURL, "externalurl", c.ExternalURL, "Begining of the URL, before the base, that should be used eg. in mails")
|
||||
|
||||
// Others flags are declared in some other files when they need specials configurations
|
||||
}
|
||||
|
||||
func Consolidated() (cfg *Config, err error) {
|
||||
// Define defaults options
|
||||
cfg = &Config{
|
||||
Bind: ":8082",
|
||||
ExternalURL: "http://localhost:8082",
|
||||
}
|
||||
|
||||
cfg.declareFlags()
|
||||
|
||||
// Then, overwrite that by what is present in the environment
|
||||
err = cfg.FromEnv()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Finaly, command line takes precedence
|
||||
err = cfg.parseCLI()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// parseCLI parse the flags and treats extra args as configuration filename.
|
||||
func (c *Config) parseCLI() error {
|
||||
flag.Parse()
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in a new issue