in oss/lib/command.go [166:205]
func (cmd *Command) assembleOptions(cmder interface{}) {
if cmdder, ok := cmder.(RewriteAssembleOptioner); ok {
cmdder.rewriteAssembleOptions()
return
}
for name, option := range cmd.configOptions {
if _, ok := cmd.options[name]; ok {
if OptionMap[name].optionType != OptionTypeFlagTrue {
if val, _ := GetString(name, cmd.options); val == "" {
opval := option.(string)
cmd.options[name] = &opval
delete(cmd.configOptions, name)
} else if name == OptionEndpoint {
delete(cmd.configOptions, BucketCnameSection)
delete(cmd.configOptions, BucketEndpointSection)
}
}
}
}
for name := range cmd.options {
if OptionMap[name].def != "" {
switch OptionMap[name].optionType {
case OptionTypeInt64:
if val, _ := GetString(name, cmd.options); val == "" {
def, _ := strconv.ParseInt(OptionMap[name].def, 10, 64)
cmd.options[name] = &def
}
case OptionTypeAlternative:
fallthrough
case OptionTypeString:
if val, _ := GetString(name, cmd.options); val == "" {
def := OptionMap[name].def
cmd.options[name] = &def
}
}
}
}
}