@@ -121,7 +121,7 @@ func (cmd *RunCommand) Run() error {
121121 }
122122 }
123123
124- osEnv , err := parseKeyValueStringsToMap (os .Environ ())
124+ osEnv , passthroughEnv := parseKeyValueStringsToMap (os .Environ ())
125125 if err != nil {
126126 return err
127127 }
@@ -239,7 +239,7 @@ func (cmd *RunCommand) Run() error {
239239 maskedStderr := masker .NewMaskedWriter (os .Stderr , valuesToMask , maskString , cmd .maskingTimeout )
240240
241241 command := exec .Command (cmd .command [0 ], cmd .command [1 :]... )
242- command .Env = mapToKeyValueStrings (environment )
242+ command .Env = append ( passthroughEnv , mapToKeyValueStrings (environment ) ... )
243243 command .Stdin = os .Stdin
244244 if cmd .noMasking {
245245 command .Stdout = os .Stdout
@@ -323,8 +323,9 @@ func mapToKeyValueStrings(pairs map[string]string) []string {
323323// parseKeyValueStringsToMap converts a slice of "key=value" strings to a
324324// map of "key":"value" pairs. When duplicate keys occur, the last value is
325325// used.
326- func parseKeyValueStringsToMap (values []string ) (map [string ]string , error ) {
327- result := make (map [string ]string )
326+ func parseKeyValueStringsToMap (values []string ) (map [string ]string , []string ) {
327+ parsedLines := make (map [string ]string )
328+ var unparsableLines []string
328329 for _ , kv := range values {
329330 split := strings .SplitN (kv , "=" , 2 )
330331 key := strings .TrimSpace (split [0 ])
@@ -335,13 +336,13 @@ func parseKeyValueStringsToMap(values []string) (map[string]string, error) {
335336
336337 err := validation .ValidateEnvarName (key )
337338 if err != nil {
338- return nil , err
339+ unparsableLines = append (unparsableLines , kv )
340+ } else {
341+ parsedLines [key ] = value
339342 }
340-
341- result [key ] = value
342343 }
343344
344- return result , nil
345+ return parsedLines , unparsableLines
345346}
346347
347348// EnvSource defines a method of reading environment variables from a source.
0 commit comments