Convert env management to a resolver.

This ensures that hooks correctly detect when values are set via
environment variables. Fixes #73.
This commit is contained in:
Alec Thomas
2020-04-16 22:19:21 +10:00
parent a77a484f6a
commit fbe8d48e4b
4 changed files with 35 additions and 11 deletions
-11
View File
@@ -3,7 +3,6 @@ package kong
import (
"fmt"
"math"
"os"
"reflect"
"strconv"
"strings"
@@ -326,16 +325,6 @@ func (v *Value) ApplyDefault() error {
// Does not include resolvers.
func (v *Value) Reset() error {
v.Target.Set(reflect.Zero(v.Target.Type()))
if v.Tag.Env != "" {
envar := os.Getenv(v.Tag.Env)
if envar != "" {
err := v.Parse(ScanFromTokens(Token{Type: FlagValueToken, Value: envar}), v.Target)
if err != nil {
return fmt.Errorf("%s (from envar %s=%q)", err, v.Tag.Env, envar)
}
return nil
}
}
if v.Default != "" {
return v.Parse(ScanFromTokens(Token{Type: FlagValueToken, Value: v.Default}), v.Target)
}