Skip to content

Commit f8b7ea7

Browse files
[parser] Add support for environment variable lists (like $PATH).
1 parent feb0e71 commit f8b7ea7

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

sources/lib/parser.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,7 +1060,7 @@ func parseFromData (_library *Library, _sourceData []byte, _sourcePath string, _
10601060
_parseContext.scriptletContext.ExecutablePaths = append (_parseContext.scriptletContext.ExecutablePaths, _path)
10611061
}
10621062

1063-
case "environment", "env", "environment-path", "env-path" :
1063+
case "environment", "env", "environment-path", "env-path", "environment-append", "env-append", "environment-path-append", "env-path-append" :
10641064

10651065
if _descriptor == "" {
10661066
return errorf (0x7f049882, "invalid syntax (%d): empty statement environment descriptor | %s", _lineIndex, _line)
@@ -1074,15 +1074,12 @@ func parseFromData (_library *Library, _sourceData []byte, _sourcePath string, _
10741074
if _name == "" {
10751075
return errorf (0x6bce31bb, "invalid syntax (%d): empty statement environment key | %s", _lineIndex, _line)
10761076
}
1077-
if _, _exists := _parseContext.scriptletContext.Environment[_name]; _exists && !_disabled {
1078-
return errorf (0x774b50de, "invalid syntax (%d): duplicate statement environment key | %s", _lineIndex, _line)
1079-
}
10801077
if _value_0, _error := replaceVariables (_value); _error != nil {
10811078
return _error
10821079
} else {
10831080
_value = _value_0
10841081
}
1085-
if (_kind == "environment-path") || (_kind == "env-path") {
1082+
if (_kind == "environment-path") || (_kind == "env-path") || (_kind == "environment-path-append") || (_kind == "env-path-append") {
10861083
if _value == "" {
10871084
return errorf (0x2124d511, "invalid syntax (%d): empty statement environment descriptor | %s", _lineIndex, _line)
10881085
}
@@ -1093,6 +1090,16 @@ func parseFromData (_library *Library, _sourceData []byte, _sourcePath string, _
10931090
}
10941091
}
10951092
if !_disabled {
1093+
_valueExisting, _exists := _parseContext.scriptletContext.Environment[_name]
1094+
if (_kind == "environment-append") || (_kind == "env-append") || (_kind == "environment-path-append") || (_kind == "env-path-append") {
1095+
if _exists {
1096+
_value = _valueExisting + string (os.PathListSeparator) + _value
1097+
}
1098+
} else {
1099+
if _exists {
1100+
return errorf (0x774b50de, "invalid syntax (%d): duplicate statement environment key | %s", _lineIndex, _line)
1101+
}
1102+
}
10961103
_parseContext.scriptletContext.Environment[_name] = _value
10971104
}
10981105

0 commit comments

Comments
 (0)