Revert "Convert env management to a resolver."

This reverts commit fbe8d48e4b.
This commit is contained in:
Alec Thomas
2020-04-30 17:03:21 +10:00
parent b6ff115b3e
commit ed7caf6841
4 changed files with 11 additions and 35 deletions
-21
View File
@@ -1,21 +0,0 @@
package kong
import (
"os"
)
// EnvarResolver resolves values from environment variables.
//
// It is installed by default. Use ClearResolvers() to disable this.
func EnvarResolver() Resolver {
return ResolverFunc(func(context *Context, parent *Path, flag *Flag) (interface{}, error) {
if flag.Tag.Env == "" {
return nil, nil
}
envar := os.Getenv(flag.Tag.Env)
if envar != "" {
return envar, nil
}
return nil, nil
})
}
-1
View File
@@ -71,7 +71,6 @@ func New(grammar interface{}, options ...Option) (*Kong, error) {
vars: Vars{},
bindings: bindings{},
helpFormatter: DefaultHelpValueFormatter,
resolvers: []Resolver{EnvarResolver()},
}
options = append(options, Bind(k))
-13
View File
@@ -675,19 +675,6 @@ func TestHooksCalledForDefault(t *testing.T) {
require.Equal(t, []string{"before:default", "after:default"}, ctx.values)
}
func TestHooksCalledForEnv(t *testing.T) {
var cli struct {
Flag hookValue `env:"FLAG"`
}
defer tempEnv(envMap{"FLAG": "flagged"})()
ctx := &hookContext{}
_, err := mustNew(t, &cli, kong.Bind(ctx)).Parse(nil)
require.NoError(t, err)
require.Equal(t, "flagged", string(cli.Flag))
require.Equal(t, []string{"before:", "after:flagged"}, ctx.values)
}
func TestEnum(t *testing.T) {
var cli struct {
Flag string `enum:"a,b,c"`
+11
View File
@@ -3,6 +3,7 @@ package kong
import (
"fmt"
"math"
"os"
"reflect"
"strconv"
"strings"
@@ -325,6 +326,16 @@ 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)
}