GitPedia

ReactiveTask

Flexible, stream-based abstraction for launching processes

From Carthage·Updated June 12, 2026·View on GitHub·

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.

swift
let 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.

View all contributors on GitHub →

This article is auto-generated from Carthage/ReactiveTask via the GitHub API.Last fetched: 6/23/2026