@@ -39,6 +39,9 @@ public struct ProcessResult: CustomStringConvertible {
39
39
/// The arguments with which the process was launched.
40
40
public let arguments : [ String ]
41
41
42
+ /// The environment with which the process was launched.
43
+ public let environment : [ String : String ]
44
+
42
45
/// The exit status of the process.
43
46
public let exitStatus : ExitStatus
44
47
@@ -55,6 +58,7 @@ public struct ProcessResult: CustomStringConvertible {
55
58
/// See `waitpid(2)` for information on the exit status code.
56
59
public init (
57
60
arguments: [ String ] ,
61
+ environment: [ String : String ] ,
58
62
exitStatusCode: Int32 ,
59
63
output: Result < [ UInt8 ] , AnyError > ,
60
64
stderrOutput: Result < [ UInt8 ] , AnyError >
@@ -70,18 +74,20 @@ public struct ProcessResult: CustomStringConvertible {
70
74
exitStatus = . terminated( code: WEXITSTATUS ( exitStatusCode) )
71
75
}
72
76
#endif
73
- self . init ( arguments: arguments, exitStatus: exitStatus, output: output,
77
+ self . init ( arguments: arguments, environment : environment , exitStatus: exitStatus, output: output,
74
78
stderrOutput: stderrOutput)
75
79
}
76
80
77
81
/// Create an instance using an exit status and output result.
78
82
public init (
79
83
arguments: [ String ] ,
84
+ environment: [ String : String ] ,
80
85
exitStatus: ExitStatus ,
81
86
output: Result < [ UInt8 ] , AnyError > ,
82
87
stderrOutput: Result < [ UInt8 ] , AnyError >
83
88
) {
84
89
self . arguments = arguments
90
+ self . environment = environment
85
91
self . output = output
86
92
self . stderrOutput = stderrOutput
87
93
self . exitStatus = exitStatus
@@ -474,6 +480,7 @@ public final class Process: ObjectIdentifierProtocol {
474
480
// Construct the result.
475
481
let executionResult = ProcessResult (
476
482
arguments: arguments,
483
+ environment: environment,
477
484
exitStatusCode: exitStatusCode,
478
485
output: stdout. result,
479
486
stderrOutput: stderr. result
@@ -657,7 +664,10 @@ extension ProcessResult.Error: CustomStringConvertible {
657
664
case . signalled( let signal) :
658
665
stream <<< " signalled( \( signal) ): "
659
666
}
660
-
667
+
668
+ stream <<< result. environment. map ( { " \( $0) = \( $1) " } ) . joined ( separator: " " )
669
+ stream <<< " "
670
+
661
671
// Strip sandbox information from arguments to keep things pretty.
662
672
var args = result. arguments
663
673
// This seems a little fragile.
0 commit comments