package configor import ( "os" "regexp" ) type Configor struct { *Config } type Config struct { Environment string ENVPrefix string } // New initialize a Configor func New(config *Config) *Configor { if config == nil { config = &Config{} } return &Configor{Config: config} } // GetEnvironment get environment func (configor *Configor) GetEnvironment() string { if configor.Environment == "" { if env := os.Getenv("CONFIGOR_ENV"); env != "" { return env } if isTest, _ := regexp.MatchString("/_test/", os.Args[0]); isTest { return "test" } return "development" } return configor.Environment } // Load will unmarshal configurations to struct from files that you provide func (configor *Configor) Load(config interface{}, files ...string) error { for _, file := range configor.getConfigurationFiles(files...) { if err := processFile(config, file); err != nil { return err } } if prefix := configor.getENVPrefix(config); prefix == "-" { return processTags(config) } else { return processTags(config, prefix) } } // ENV return environment func ENV() string { return New(nil).GetEnvironment() } // Load will unmarshal configurations to struct from files that you provide func Load(config interface{}, files ...string) error { return New(nil).Load(config, files...) }