@@ -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