package config import ( "flag" "os" "strings" ) const cdbpath = "DBPath" const port = "port" const mport = "mport" const fport = "fport" type Config struct { DBPath string Port string MonitorPort string FetchPort string } func New() *Config { lookups := make(map[string]*string) add(cdbpath, "./db", lookups) add(port, ":9101", lookups) add(mport, ":9102", lookups) add(fport, ":9103", lookups) flag.Parse() return &Config{ DBPath: *lookups[cdbpath], Port: *lookups[port], MonitorPort: *lookups[mport], FetchPort: *lookups[fport], } } func add(key string, value string, lookups map[string]*string) { env := os.Getenv(strings.ToUpper(key)) if env != "" { value = env } lookups[key] = flag.String(key, value, "") }