Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Flexible, stream-based abstraction for launching processes

License

Notifications You must be signed in to change notification settings

Carthage/ReactiveTask

Repository files navigation

ReactiveTask

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.

License

ReactiveTask is released under the MIT license.

About

Flexible, stream-based abstraction for launching processes

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 13

AltStyle によって変換されたページ (->オリジナル) /