resolver
API
resolver
packageAPI reference for the resolver
package.
Imports
(5)
F
function
BindValue
BindValue binds a string value to a reflect.Value.
Parameters
val
value
string
Returns
error
pkg/resolver/resolver.go:17-57
func BindValue(val reflect.Value, value string) error
{
switch val.Kind() {
case reflect.String:
val.SetString(value)
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
if val.Type() == reflect.TypeOf(time.Duration(0)) {
d, err := time.ParseDuration(value)
if err != nil {
return fmt.Errorf("invalid duration: %v", value)
}
val.SetInt(int64(d))
} else {
i, err := strconv.ParseInt(value, 10, 64)
if err != nil {
return fmt.Errorf("invalid integer: %v", value)
}
val.SetInt(i)
}
case reflect.Float32, reflect.Float64:
f, err := strconv.ParseFloat(value, 64)
if err != nil {
return fmt.Errorf("invalid float: %v", value)
}
val.SetFloat(f)
case reflect.Bool:
b, err := ParseBool(value)
if err != nil {
return fmt.Errorf("invalid boolean: %v", value)
}
val.SetBool(b)
case reflect.Slice:
if val.Type().Elem().Kind() == reflect.String {
val.Set(reflect.Append(val, reflect.ValueOf(value)))
} else {
return fmt.Errorf("unsupported slice type: %v", val.Type().Elem().Kind())
}
default:
return fmt.Errorf("unsupported type: %v", val.Kind())
}
return nil
}
Example
var x int
err := resolver.BindValue(reflect.ValueOf(&x).Elem(), "42")
F
function
ParseBool
ParseBool parses a boolean string with support for more formats.
Parameters
str
string
Returns
bool
error
pkg/resolver/resolver.go:64-72
func ParseBool(str string) (bool, error)
{
switch str {
case "1", "t", "T", "true", "TRUE", "True", "yes", "Yes", "YES", "on", "ON":
return true, nil
case "0", "f", "F", "false", "FALSE", "False", "no", "No", "NO", "off", "OFF":
return false, nil
}
return false, fmt.Errorf("invalid boolean value: %s", str)
}
Example
b, err := resolver.ParseBool("yes")
F
function
GetValue
GetValue returns the value to bind based on priority: CLI > Env > Default.
Parameters
cliVal
*string
envName
string
defVal
string
isFlag
bool
Returns
string
error
pkg/resolver/resolver.go:79-95
func GetValue(cliVal *string, envName, defVal string, isFlag bool) (string, error)
{
if cliVal != nil {
return *cliVal, nil
}
if envName != "" {
if val, ok := os.LookupEnv(envName); ok {
return val, nil
}
}
if defVal != "" {
return defVal, nil
}
return "", nil
}
Example
val, err := resolver.GetValue(nil, "ENV_VAR", "default", false)