Skip to content

Commit edd6cf5

Browse files
committed
Further refactoring
1 parent 5b5db57 commit edd6cf5

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

ReactiveTask/Task.swift

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ public func launchTask(task: Task, standardInput: SignalProducer<NSData, NoError
441441
}
442442

443443
return SignalProducer { observer, disposable in
444-
func startAggregating(producer: Pipe.ReadProducer) -> AnyProperty<Aggregation?> {
444+
func startAggregating(producer: Pipe.ReadProducer) -> Pipe.ReadProducer {
445445
let aggregated = MutableProperty<Aggregation?>(nil)
446446

447447
producer.startWithSignal { signal, signalDisposable in
@@ -461,7 +461,10 @@ public func launchTask(task: Task, standardInput: SignalProducer<NSData, NoError
461461
}))
462462
}
463463

464-
return AnyProperty(aggregated)
464+
return aggregated.producer
465+
.ignoreNil()
466+
.promoteErrors(TaskError.self)
467+
.flatMap(.Concat) { $0.producer }
465468
}
466469

467470
let stdoutAggregated = startAggregating(stdoutProducer)
@@ -472,28 +475,19 @@ public func launchTask(task: Task, standardInput: SignalProducer<NSData, NoError
472475

473476
dispatch_group_enter(group)
474477
rawTask.terminationHandler = { nstask in
475-
func getProducer(property: AnyProperty<Aggregation?>) -> Pipe.ReadProducer {
476-
return property.producer
477-
.ignoreNil()
478-
.promoteErrors(TaskError.self)
479-
.flatMap(.Concat) { $0.producer }
480-
}
481-
let stdoutAggregatedProducer = getProducer(stdoutAggregated)
482-
let stderrAggregatedProducer = getProducer(stderrAggregated)
483-
484478
let terminationStatus = nstask.terminationStatus
485479
if terminationStatus == EXIT_SUCCESS {
486480
// Wait for stderr to finish, then pass
487481
// through stdout.
488-
disposable += stderrAggregatedProducer
489-
.then(stdoutAggregatedProducer)
482+
disposable += stderrAggregated
483+
.then(stdoutAggregated)
490484
.map(TaskEvent.Success)
491485
.start(observer)
492486
} else {
493487
// Wait for stdout to finish, then pass
494488
// through stderr.
495-
disposable += stdoutAggregatedProducer
496-
.then(stderrAggregatedProducer)
489+
disposable += stdoutAggregated
490+
.then(stderrAggregated)
497491
.flatMap(.Concat) { data -> SignalProducer<TaskEvent<NSData>, TaskError> in
498492
let errorString = (data.length > 0 ? NSString(data: data, encoding: NSUTF8StringEncoding) as? String : nil)
499493
return SignalProducer(error: .ShellTaskFailed(task, exitCode: terminationStatus, standardError: errorString))

0 commit comments

Comments
 (0)