From f971fca2b2664c4dec0cee24225dc3c415211498 Mon Sep 17 00:00:00 2001 From: Jacob McCann Date: Thu, 26 Oct 2017 13:08:03 -0500 Subject: [PATCH] Allow FilePath to take []string --- flag.go | 22 +++++++++------------- flag_test.go | 2 +- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/flag.go b/flag.go index 68942ae..f8d4f51 100644 --- a/flag.go +++ b/flag.go @@ -125,9 +125,9 @@ func (f GenericFlag) Apply(set *flag.FlagSet) { // provided by the user for parsing by the flag func (f GenericFlag) ApplyWithError(set *flag.FlagSet) error { val := f.Value - if envVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok { - if err := val.Set(envVal); err != nil { - return fmt.Errorf("could not parse %s as value for flag %s: %s", envVal, f.Name, err) + if fileEnvVal, ok := flagFromFileEnv(f.FilePath, f.EnvVar); ok { + if err := val.Set(fileEnvVal); err != nil { + return fmt.Errorf("could not parse %s as value for flag %s: %s", fileEnvVal, f.Name, err) } } @@ -658,8 +658,6 @@ func stringifyFlag(f Flag) string { ), ) case Int64SliceFlag: - // return FlagEnvHinter(fv.FieldByName("EnvVar").String(), - // stringifyInt64SliceFlag(f.(Int64SliceFlag))) return FlagFileHinter( fv.FieldByName("FilePath").String(), FlagEnvHinter( @@ -668,8 +666,6 @@ func stringifyFlag(f Flag) string { ), ) case StringSliceFlag: - // return FlagEnvHinter(fv.FieldByName("EnvVar").String(), - // stringifyStringSliceFlag(f.(StringSliceFlag))) return FlagFileHinter( fv.FieldByName("FilePath").String(), FlagEnvHinter( @@ -763,16 +759,16 @@ func stringifySliceFlag(usage, name string, defaultVals []string) string { } func flagFromFileEnv(filePath, envName string) (val string, ok bool) { - if filePath != "" { - if data, err := ioutil.ReadFile(filePath); err == nil { - return string(data), true - } - } for _, envVar := range strings.Split(envName, ",") { envVar = strings.TrimSpace(envVar) if envVal, ok := syscall.Getenv(envVar); ok { return envVal, true } } - return + for _, fileVar := range strings.Split(filePath, ",") { + if data, err := ioutil.ReadFile(fileVar); err == nil { + return string(data), true + } + } + return "", false } diff --git a/flag_test.go b/flag_test.go index fb9163b..98c2fb9 100644 --- a/flag_test.go +++ b/flag_test.go @@ -1316,7 +1316,7 @@ func TestFlagFromFile(t *testing.T) { {"file-does-not-exist", "APP_BAR", ""}, {"file-does-not-exist", "APP_FOO", "123"}, {"file-does-not-exist", "APP_FOO,APP_BAR", "123"}, - {temp.Name(), "APP_FOO", "abc"}, + {temp.Name(), "APP_FOO", "123"}, {temp.Name(), "APP_BAR", "abc"}, }