-
-
Notifications
You must be signed in to change notification settings - Fork 107
Open
Labels
v2-plannedPlanned for v2Planned for v2
Description
I added config file support to my go-arg using project but due to #94 I could not determine when to read the config.
My project hacks support with the builtin json package. Specifically here: https://github.com/offscale/postgres-version-manager-go/blob/master/pvm/config_utils.go (with go-arg annotated struct
here: config.go)
Any chance we can get support for a configuration file in your project directly?
Thanks
EDIT: Got it working in my latest commit 48cba8
but it was a major hack; here's a taste [from that commit]:
func FieldAndValueWhenNonDefaultValue(configStruct ConfigStruct) map[string]interface{} {
val := reflect.ValueOf(configStruct)
fieldToValue := make(map[string]interface{})
for i := 0; i < val.NumField(); i++ {
field := val.Type().Field(i)
defaultTag := field.Tag.Get("default")
fieldValue := fmt.Sprintf("%v", val.Field(i).Interface())
if defaultTag != fieldValue && defaultTag != "" {
fieldToValue[field.Name] = fieldValue
}
}
return fieldToValue
}
Issues with this design include:
- Doesn't handle when replacing existing config file field explicitly with the original default value
- Doesn't check environment variables and that env tag
Metadata
Metadata
Assignees
Labels
v2-plannedPlanned for v2Planned for v2