feat(shoutrrr): restructure secret loading to allow values to propagate

This commit is contained in:
p1ksel 2020-06-11 19:34:36 +02:00
parent e2b963e2aa
commit 858334d880
2 changed files with 30 additions and 15 deletions

View file

@ -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)

View file

@ -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) {