From 858334d880a93bd6729c7d3e3b183979e26124ea Mon Sep 17 00:00:00 2001 From: p1ksel Date: Thu, 11 Jun 2020 19:34:36 +0200 Subject: [PATCH] feat(shoutrrr): restructure secret loading to allow values to propagate --- internal/flags/flags.go | 38 ++++++++++++++++++++++++------------ internal/flags/flags_test.go | 5 +++-- 2 files changed, 29 insertions(+), 14 deletions(-) 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) } - } - } else { + 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 { + 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) {