diff --git a/internal/flags/flags.go b/internal/flags/flags.go index c7e485c..0eb2db2 100644 --- a/internal/flags/flags.go +++ b/internal/flags/flags.go @@ -390,26 +390,40 @@ func GetSecretsFromFiles(rootCmd *cobra.Command) { // getSecretFromFile will check if the flag contains a reference to a file; if it does, replaces the value of the flag with the contents of the file. func getSecretFromFile(flags *pflag.FlagSet, secret string) { + flag := flags.Lookup(secret) - value := flag.Value.String() - if value != "" && isFile(value) { - file, err := ioutil.ReadFile(value) + if flags.Lookup(secret).Value.Type() == "stringArray" { + + values, err := flags.GetStringArray(secret) if err != nil { - log.Fatal(err) + log.Error(err) } - if flag.Value.Type() == "stringArray" { - rows := bytes.Split(file, []byte{'\n'}) - - for _, row := range rows { - err = flags.Set(secret, strings.TrimSpace(string(row))) + for _, value := range values { + if value != "" && isFile(value) { + file, err := ioutil.ReadFile(value) if err != nil { - log.Error(err) + log.Fatal(err) + } + + flag.Changed = false + rows := bytes.Split(file, []byte{'\n'}) + + for _, row := range rows { + err = flags.Set(secret, strings.TrimSpace(string(row))) + if err != nil { + log.Error(err) + } } } - - } else { - + } + } else { + value := flag.Value.String() + if value != "" && isFile(value) { + file, err := ioutil.ReadFile(value) + if err != nil { + log.Fatal(err) + } err = flags.Set(secret, strings.TrimSpace(string(file))) if err != nil { log.Error(err) diff --git a/internal/flags/flags_test.go b/internal/flags/flags_test.go index 5e364d7..9f06496 100644 --- a/internal/flags/flags_test.go +++ b/internal/flags/flags_test.go @@ -93,8 +93,9 @@ func TestGetSecretsArrayFromFilesWithFile(t *testing.T) { actual, err := cmd.PersistentFlags().GetStringArray("notification-url") require.NoError(t, err) - assert.Equal(t, expected[0], actual[0]) - assert.Equal(t, expected[1], actual[1]) + require.Equal(t, 2, len(actual)) + require.Equal(t, expected[0], actual[0]) + require.Equal(t, expected[1], actual[1]) } func testGetSecretsFromFiles(t *testing.T, flagName string, expected string) {