@@ -439,49 +439,38 @@ public func launchTask(task: Task, standardInput: SignalProducer<NSData, NoError
439439 }
440440
441441 return SignalProducer { observer, disposable in
442- let stdoutAggregated = MutableProperty < Aggregation ? > ( nil )
443- let stderrAggregated = MutableProperty < Aggregation ? > ( nil )
444-
445- stdoutProducer. startWithSignal { signal, signalDisposable in
446- disposable += signalDisposable
442+ func startAggregating( producer: SignalProducer < NSData , TaskError > ) -> AnyProperty < Aggregation ? > {
443+ let aggregated = MutableProperty < Aggregation ? > ( nil )
444+
445+ producer. startWithSignal { signal, signalDisposable in
446+ disposable += signalDisposable
447+
448+ let aggregate = NSMutableData ( )
449+ signal. observe ( Observer ( next: { data in
450+ observer. sendNext ( . StandardOutput( data) )
451+ aggregate. appendData ( data)
452+ } , failed: { error in
453+ observer. sendFailed ( error)
454+ aggregated. value = . Failed( error)
455+ } , completed: {
456+ aggregated. value = . Value( aggregate)
457+ } , interrupted: {
458+ aggregated. value = . Interrupted
459+ } ) )
460+ }
447461
448- let aggregate = NSMutableData ( )
449- signal. observe ( Observer ( next: { data in
450- observer. sendNext ( . StandardOutput( data) )
451- aggregate. appendData ( data)
452- } , failed: { error in
453- observer. sendFailed ( error)
454- stdoutAggregated. value = . Failed( error)
455- } , completed: {
456- stdoutAggregated. value = . Value( aggregate)
457- } , interrupted: {
458- stdoutAggregated. value = . Interrupted
459- } ) )
462+ return AnyProperty ( aggregated)
460463 }
461464
462- stderrProducer. startWithSignal { signal, signalDisposable in
463- disposable += signalDisposable
464-
465- let aggregate = NSMutableData ( )
466- signal. observe ( Observer ( next: { data in
467- observer. sendNext ( . StandardError( data) )
468- aggregate. appendData ( data)
469- } , failed: { error in
470- observer. sendFailed ( error)
471- stderrAggregated. value = . Failed( error)
472- } , completed: {
473- stderrAggregated. value = . Value( aggregate)
474- } , interrupted: {
475- stderrAggregated. value = . Interrupted
476- } ) )
477- }
465+ let stdoutAggregated = startAggregating ( stdoutProducer)
466+ let stderrAggregated = startAggregating ( stderrProducer)
478467
479468 rawTask. standardOutput = stdoutPipe. writeHandle
480469 rawTask. standardError = stderrPipe. writeHandle
481470
482471 dispatch_group_enter ( group)
483472 rawTask. terminationHandler = { nstask in
484- func getProducer( property: MutableProperty < Aggregation ? > ) -> SignalProducer < NSData , TaskError > {
473+ func getProducer( property: AnyProperty < Aggregation ? > ) -> SignalProducer < NSData , TaskError > {
485474 return property. producer
486475 . ignoreNil ( )
487476 . promoteErrors ( TaskError . self)
0 commit comments