Revert "Convert env management to a resolver."
This reverts commit fbe8d48e4b.
This commit is contained in:
@@ -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
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -71,7 +71,6 @@ func New(grammar interface{}, options ...Option) (*Kong, error) {
|
|||||||
vars: Vars{},
|
vars: Vars{},
|
||||||
bindings: bindings{},
|
bindings: bindings{},
|
||||||
helpFormatter: DefaultHelpValueFormatter,
|
helpFormatter: DefaultHelpValueFormatter,
|
||||||
resolvers: []Resolver{EnvarResolver()},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
options = append(options, Bind(k))
|
options = append(options, Bind(k))
|
||||||
|
|||||||
@@ -675,19 +675,6 @@ func TestHooksCalledForDefault(t *testing.T) {
|
|||||||
require.Equal(t, []string{"before:default", "after:default"}, ctx.values)
|
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) {
|
func TestEnum(t *testing.T) {
|
||||||
var cli struct {
|
var cli struct {
|
||||||
Flag string `enum:"a,b,c"`
|
Flag string `enum:"a,b,c"`
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package kong
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -325,6 +326,16 @@ func (v *Value) ApplyDefault() error {
|
|||||||
// Does not include resolvers.
|
// Does not include resolvers.
|
||||||
func (v *Value) Reset() error {
|
func (v *Value) Reset() error {
|
||||||
v.Target.Set(reflect.Zero(v.Target.Type()))
|
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 != "" {
|
if v.Default != "" {
|
||||||
return v.Parse(ScanFromTokens(Token{Type: FlagValueToken, Value: v.Default}), v.Target)
|
return v.Parse(ScanFromTokens(Token{Type: FlagValueToken, Value: v.Default}), v.Target)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user