Skip to content

Commit a1ae935

Browse files
committed
Normalize the exit code as unsigned integer, and align the exit code for either Unix or Windows
1 parent 1a2c523 commit a1ae935

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

Sources/Subprocess/PipeConfiguration.swift

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public struct ProcessStageOptions: Sendable {
7676
public struct PipeStage: Sendable {
7777
enum StageType: Sendable {
7878
case process(configuration: Configuration, options: ProcessStageOptions)
79-
case swiftFunction(@Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> Int32)
79+
case swiftFunction(@Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> UInt32)
8080
}
8181

8282
let stageType: StageType
@@ -110,7 +110,7 @@ public struct PipeStage: Sendable {
110110

111111
/// Create a PipeStage from a Swift function
112112
public init(
113-
swiftFunction: @escaping @Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> Int32
113+
swiftFunction: @escaping @Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> UInt32
114114
) {
115115
self.stageType = .swiftFunction(swiftFunction)
116116
}
@@ -243,7 +243,7 @@ extension PipeConfiguration where Input == NoInput, Output == DiscardedOutput, E
243243
/// Initialize a PipeConfiguration with a Swift function
244244
/// I/O defaults to discarded until finalized with `finally`
245245
public init(
246-
swiftFunction: @escaping @Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> Int32
246+
swiftFunction: @escaping @Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> UInt32
247247
) {
248248
self.stages = [PipeStage(swiftFunction: swiftFunction)]
249249
self.input = NoInput()
@@ -524,7 +524,7 @@ extension PipeConfiguration {
524524
let errorWriteFileDescriptor = createIODescriptor(from: sharedErrorPipe.writeEnd, closeWhenDone: false)
525525
var errorWriteEnd: IOChannel? = errorWriteFileDescriptor.createIOChannel()
526526

527-
let result = try await withThrowingTaskGroup(of: Int32.self) { group in
527+
let result = try await withThrowingTaskGroup(of: UInt32.self) { group in
528528
let inputReadEnd = inputReadEnd.take()!
529529
let outputWriteEnd = outputWriteEnd.take()!
530530
let errorWriteEnd = errorWriteEnd.take()!
@@ -560,12 +560,18 @@ extension PipeConfiguration {
560560
return 0
561561
}
562562

563+
#if canImport(WinSD)
564+
let terminationStatus: TerminationStatus = .exited(result)
565+
#else
566+
let terminationStatus: TerminationStatus = .exited(Int32(result))
567+
#endif
568+
563569
return PipelineTaskResult.success(
564570
0,
565571
SendableCollectedResult(
566572
CollectedResult<FileDescriptorOutput, DiscardedOutput>(
567573
processIdentifier: currentProcessIdentifier(),
568-
terminationStatus: .exited(result),
574+
terminationStatus: terminationStatus,
569575
standardOutput: (),
570576
standardError: ()
571577
)))
@@ -962,7 +968,7 @@ public func pipe(
962968

963969
/// Create a single-stage pipeline with a Swift function
964970
public func pipe(
965-
swiftFunction: @escaping @Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> Int32
971+
swiftFunction: @escaping @Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> UInt32
966972
) -> [PipeStage] {
967973
return [PipeStage(swiftFunction: swiftFunction)]
968974
}
@@ -997,7 +1003,7 @@ public func | (
9971003
/// Pipe operator for stage arrays with Swift function
9981004
public func | (
9991005
left: [PipeStage],
1000-
right: @escaping @Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> Int32
1006+
right: @escaping @Sendable (AsyncBufferSequence, StandardInputWriter, StandardInputWriter) async throws -> UInt32
10011007
) -> [PipeStage] {
10021008
return left + [PipeStage(swiftFunction: right)]
10031009
}

0 commit comments

Comments
 (0)