|
@@ -1043,7 +1043,7 @@ func (ce *configPathError) Error() string {
|
1043
|
1043
|
return fmt.Sprintf("Couldn't apply config override `%s`: %s", ce.name, ce.desc)
|
1044
|
1044
|
}
|
1045
|
1045
|
|
1046
|
|
-func mungeFromEnvironment(config *Config, envPair string) (applied bool, err *configPathError) {
|
|
1046
|
+func mungeFromEnvironment(config *Config, envPair string) (applied bool, name string, err *configPathError) {
|
1047
|
1047
|
equalIdx := strings.IndexByte(envPair, '=')
|
1048
|
1048
|
name, value := envPair[:equalIdx], envPair[equalIdx+1:]
|
1049
|
1049
|
if strings.HasPrefix(name, "ERGO__") {
|
|
@@ -1051,7 +1051,7 @@ func mungeFromEnvironment(config *Config, envPair string) (applied bool, err *co
|
1051
|
1051
|
} else if strings.HasPrefix(name, "ORAGONO__") {
|
1052
|
1052
|
name = strings.TrimPrefix(name, "ORAGONO__")
|
1053
|
1053
|
} else {
|
1054
|
|
- return false, nil
|
|
1054
|
+ return false, "", nil
|
1055
|
1055
|
}
|
1056
|
1056
|
pathComponents := strings.Split(name, "__")
|
1057
|
1057
|
for i, pathComponent := range pathComponents {
|
|
@@ -1062,10 +1062,10 @@ func mungeFromEnvironment(config *Config, envPair string) (applied bool, err *co
|
1062
|
1062
|
t := v.Type()
|
1063
|
1063
|
for _, component := range pathComponents {
|
1064
|
1064
|
if component == "" {
|
1065
|
|
- return false, &configPathError{name, "invalid", nil}
|
|
1065
|
+ return false, "", &configPathError{name, "invalid", nil}
|
1066
|
1066
|
}
|
1067
|
1067
|
if v.Kind() != reflect.Struct {
|
1068
|
|
- return false, &configPathError{name, "index into non-struct", nil}
|
|
1068
|
+ return false, "", &configPathError{name, "index into non-struct", nil}
|
1069
|
1069
|
}
|
1070
|
1070
|
var nextField reflect.StructField
|
1071
|
1071
|
success := false
|
|
@@ -1091,7 +1091,7 @@ func mungeFromEnvironment(config *Config, envPair string) (applied bool, err *co
|
1091
|
1091
|
}
|
1092
|
1092
|
}
|
1093
|
1093
|
if !success {
|
1094
|
|
- return false, &configPathError{name, fmt.Sprintf("couldn't resolve path component: `%s`", component), nil}
|
|
1094
|
+ return false, "", &configPathError{name, fmt.Sprintf("couldn't resolve path component: `%s`", component), nil}
|
1095
|
1095
|
}
|
1096
|
1096
|
v = v.FieldByName(nextField.Name)
|
1097
|
1097
|
// dereference pointer field if necessary, initialize new value if necessary
|
|
@@ -1105,9 +1105,9 @@ func mungeFromEnvironment(config *Config, envPair string) (applied bool, err *co
|
1105
|
1105
|
}
|
1106
|
1106
|
yamlErr := yaml.Unmarshal([]byte(value), v.Addr().Interface())
|
1107
|
1107
|
if yamlErr != nil {
|
1108
|
|
- return false, &configPathError{name, "couldn't deserialize YAML", yamlErr}
|
|
1108
|
+ return false, "", &configPathError{name, "couldn't deserialize YAML", yamlErr}
|
1109
|
1109
|
}
|
1110
|
|
- return true, nil
|
|
1110
|
+ return true, name, nil
|
1111
|
1111
|
}
|
1112
|
1112
|
|
1113
|
1113
|
// LoadConfig loads the given YAML configuration file.
|
|
@@ -1119,7 +1119,7 @@ func LoadConfig(filename string) (config *Config, err error) {
|
1119
|
1119
|
|
1120
|
1120
|
if config.AllowEnvironmentOverrides {
|
1121
|
1121
|
for _, envPair := range os.Environ() {
|
1122
|
|
- applied, envErr := mungeFromEnvironment(config, envPair)
|
|
1122
|
+ applied, name, envErr := mungeFromEnvironment(config, envPair)
|
1123
|
1123
|
if envErr != nil {
|
1124
|
1124
|
if envErr.fatalErr != nil {
|
1125
|
1125
|
return nil, envErr
|
|
@@ -1127,7 +1127,7 @@ func LoadConfig(filename string) (config *Config, err error) {
|
1127
|
1127
|
log.Println(envErr.Error())
|
1128
|
1128
|
}
|
1129
|
1129
|
} else if applied {
|
1130
|
|
- log.Printf("applied environment override: %s\n", envPair)
|
|
1130
|
+ log.Printf("applied environment override: %s\n", name)
|
1131
|
1131
|
}
|
1132
|
1132
|
}
|
1133
|
1133
|
}
|