ReactiveTask is a Swift framework for launching shell tasks (processes), built using ReactiveSwift.
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.
ReactiveTask is released under the MIT license.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4