2022-02-21 22:47:36 -08:00
|
|
|
package gosimpleconf
|
2022-02-21 22:26:38 -08:00
|
|
|
|
2022-11-09 00:16:36 -08:00
|
|
|
import "os"
|
2022-02-21 22:26:38 -08:00
|
|
|
|
2022-11-09 00:16:36 -08:00
|
|
|
func Configure(filename string) (ConfigMap, error) {
|
2022-02-21 22:26:38 -08:00
|
|
|
var err error
|
|
|
|
|
2022-11-09 00:16:36 -08:00
|
|
|
configMap, err := ReadFile(filename)
|
2022-02-21 22:26:38 -08:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2022-11-09 00:16:36 -08:00
|
|
|
flagMap := SetupFlagOverrides(configMap)
|
|
|
|
configMap = ParseFlags(configMap, flagMap)
|
2022-06-18 12:44:10 -07:00
|
|
|
|
2022-11-09 00:16:36 -08:00
|
|
|
return configMap, nil
|
2022-06-18 12:44:10 -07:00
|
|
|
}
|
|
|
|
|
2022-11-09 00:16:36 -08:00
|
|
|
func ConfigureWithDefaults(filename string, defaultConf ConfigMap) (ConfigMap, error) {
|
2022-02-21 22:26:38 -08:00
|
|
|
var err error
|
|
|
|
|
2022-11-09 00:16:36 -08:00
|
|
|
_, err = os.Stat(filename)
|
|
|
|
if os.IsNotExist(err) {
|
|
|
|
// Config file does not exist, return a default configMap
|
|
|
|
return defaultConf, nil
|
|
|
|
} else if err != nil {
|
2022-02-21 22:26:38 -08:00
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2022-11-09 00:16:36 -08:00
|
|
|
return Configure(filename)
|
2022-09-27 22:17:45 -07:00
|
|
|
}
|