Skip to content

Commit f1aef87

Browse files
committed
fix: correctly update array flag from file
1 parent 479188e commit f1aef87

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

internal/flags/flags.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package flags
22

33
import (
4+
"bufio"
45
"errors"
56
"io/ioutil"
67
"os"
@@ -453,10 +454,29 @@ func GetSecretsFromFiles(rootCmd *cobra.Command) {
453454

454455
// 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.
455456
func getSecretFromFile(flags *pflag.FlagSet, secret string) {
456-
value, err := flags.GetString(secret)
457-
if err != nil {
458-
log.Error(err)
457+
flag := flags.Lookup(secret)
458+
if sliceValue, ok := flag.Value.(pflag.SliceValue); ok {
459+
oldValues := sliceValue.GetSlice()
460+
values := make([]string, 0, len(oldValues))
461+
for _, value := range oldValues {
462+
if value != "" && isFile(value) {
463+
file, err := os.Open(value)
464+
if err != nil {
465+
log.Fatal(err)
466+
}
467+
scanner := bufio.NewScanner(file)
468+
for scanner.Scan() {
469+
values = append(values, scanner.Text())
470+
}
471+
} else {
472+
values = append(values, value)
473+
}
474+
}
475+
sliceValue.Replace(values)
476+
return
459477
}
478+
479+
value := flag.Value.String()
460480
if value != "" && isFile(value) {
461481
file, err := ioutil.ReadFile(value)
462482
if err != nil {

0 commit comments

Comments
 (0)