ReactiveTask
Flexible, stream-based abstraction for launching processes
ReactiveTask is a Swift framework for launching shell tasks (processes), built using [ReactiveSwift](https://github.com/ReactiveCocoa/ReactiveSwift). The project is written primarily in Swift, distributed under the MIT License license, first published in 2014. Key topics include: reactiveswift, swift.
Latest release: 0.16.0
June 13, 2019View Changelog →
ReactiveTask
ReactiveTask is a Swift framework for launching shell tasks (processes), built using ReactiveSwift.
swiftlet strings = [ "foo\n", "bar\n", "buzz\n", "fuzz\n" ] let input = SignalProducer<Data, NoError>(values: strings.map { $0.data(using: .utf8)! }) let task = Task("/usr/bin/sort") // Run the task, ignoring the output, and do something with the final result. let result: Result<String, TaskError>? = task.launch(standardInput: input) .ignoreTaskData() .map { String(data: $0, encoding: .utf8) } .ignoreNil() .single() print("Output of `\(task)`: \(result?.value ?? "")") // Start the task and print all the events, which includes all the output // that was received. task.launch(standardInput: input) .flatMapTaskEvents(.concat) { data in return SignalProducer(value: String(data: data, encoding: .utf8)) } .startWithNext { (event: TaskEvent) in switch event { case let .launch(task): print("launched task: \(task)") case let .standardError(data): print("stderr: \(data)") case let .standardOutput(data): print("stdout: \(data)") case let .success(string): print("value: \(string ?? "")") } }
For examples of how to use ReactiveTask, see the Xcode and Git integration code from the CarthageKit framework.
License
ReactiveTask is released under the MIT license.
Contributors
Showing top 12 contributors by commit count.
This article is auto-generated from Carthage/ReactiveTask via the GitHub API.Last fetched: 6/23/2026
