@@ -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.
0 commit comments