Skip to content
This repository was archived by the owner on Feb 16, 2023. It is now read-only.

Commit 0a0c685

Browse files
committed
Merge remote-tracking branch 'origin/master' into release/v0.30.0
2 parents febe8bc + 29fddd0 commit 0a0c685

3 files changed

Lines changed: 28 additions & 12 deletions

File tree

internals/secrethub/inject.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,7 @@ func (cmd *InjectCommand) Run() error {
9999

100100
templateVars := make(map[string]string)
101101

102-
osEnv, err := parseKeyValueStringsToMap(os.Environ())
103-
if err != nil {
104-
return err
105-
}
102+
osEnv, _ := parseKeyValueStringsToMap(os.Environ())
106103

107104
for k, v := range osEnv {
108105
if strings.HasPrefix(k, templateVarEnvVarPrefix) {

internals/secrethub/run.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func (cmd *RunCommand) Run() error {
122122
}
123123
}
124124

125-
osEnv, err := parseKeyValueStringsToMap(os.Environ())
125+
osEnv, passthroughEnv := parseKeyValueStringsToMap(os.Environ())
126126
if err != nil {
127127
return err
128128
}
@@ -240,7 +240,7 @@ func (cmd *RunCommand) Run() error {
240240
maskedStderr := masker.NewMaskedWriter(os.Stderr, valuesToMask, maskString, cmd.maskingTimeout)
241241

242242
command := exec.Command(cmd.command[0], cmd.command[1:]...)
243-
command.Env = mapToKeyValueStrings(environment)
243+
command.Env = append(passthroughEnv, mapToKeyValueStrings(environment)...)
244244
command.Stdin = os.Stdin
245245
if cmd.noMasking {
246246
command.Stdout = os.Stdout
@@ -324,8 +324,9 @@ func mapToKeyValueStrings(pairs map[string]string) []string {
324324
// parseKeyValueStringsToMap converts a slice of "key=value" strings to a
325325
// map of "key":"value" pairs. When duplicate keys occur, the last value is
326326
// used.
327-
func parseKeyValueStringsToMap(values []string) (map[string]string, error) {
328-
result := make(map[string]string)
327+
func parseKeyValueStringsToMap(values []string) (map[string]string, []string) {
328+
parsedLines := make(map[string]string)
329+
var unparsableLines []string
329330
for _, kv := range values {
330331
split := strings.SplitN(kv, "=", 2)
331332
key := strings.TrimSpace(split[0])
@@ -336,13 +337,13 @@ func parseKeyValueStringsToMap(values []string) (map[string]string, error) {
336337

337338
err := validation.ValidateEnvarName(key)
338339
if err != nil {
339-
return nil, err
340+
unparsableLines = append(unparsableLines, kv)
341+
} else {
342+
parsedLines[key] = value
340343
}
341-
342-
result[key] = value
343344
}
344345

345-
return result, nil
346+
return parsedLines, unparsableLines
346347
}
347348

348349
// EnvSource defines a method of reading environment variables from a source.

internals/secrethub/run_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,3 +657,21 @@ func TestTrimQuotes(t *testing.T) {
657657
})
658658
}
659659
}
660+
661+
func Test_parseKeyValueStringsToMap(t *testing.T) {
662+
input := []string{
663+
"A=B",
664+
"B",
665+
"=::=::\\",
666+
}
667+
668+
parsableValues, unparsableValues := parseKeyValueStringsToMap(input)
669+
670+
assert.Equal(t, parsableValues, map[string]string{
671+
"A": "B",
672+
"B": "",
673+
})
674+
assert.Equal(t, unparsableValues, []string{
675+
"=::=::\\",
676+
})
677+
}

0 commit comments

Comments
 (0)