Skip to content

flintprocessor/Work

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Work
GitHub release Swift Package Manager license

Execute shell command and get output. Simple and robust.

Table of Contents

Installation

Add Work to Package.swift.

dependencies: [
    .package(url: "https://github.com/flintbox/Work", from: "0.1.0")
]

Work

Work is subclass of Operation wrapping Process object.

Example

Synchronous

import Foundation
import Work

// Create shell commands.
let echo1 = Work(
    command: "echo 1-1; sleep 1; echo 1-2; sleep 1; echo 1-3",
    standardOutputHandler: { output in
        print("echo1 says: \(output)")
    }
)
let echo2 = Work(command: "echo 2-1; sleep 1; echo 2-2; sleep 1; echo 2-3")

// Start them synchronously.
echo1.start()
echo2.start()

// Print standard output of echo2.
print(echo2.standardOutput)

Output

echo1 says: 1-1
echo1 says: 1-2
echo1 says: 1-3
2-1
2-2
2-3

Asynchronous

import Foundation
import Work

// Create shell commands.
let echo1 = Work(command: "echo 1-1; sleep 1; echo 1-2; sleep 1; echo 1-3")
echo1.standardOutputHandler = { output in
    print("echo1 says: \(output)")
}
echo1.completion = { result in
    switch result {
    case .success(_):
        print("echo1 success")
    case .failure(_, _):
        print("echo1 failure")
    }
}

let echo2 = Work(
    command: "echo 2-1; sleep 1; echo 2-2; sleep 3; echo 2-3",
    standardOutputHandler: { output in
        print("echo2 says: \(output)")
    }, completion: { result in
        switch result {
        case .success(_):
            print("echo2 success")
        case .failure(_, _):
            print("echo2 failure")
        }
    }
)

// Start them asynchronously.
OperationQueue().addOperations([echo1, echo2], waitUntilFinished: true)

Output

echo2 says: 2-1
echo1 says: 1-1
echo2 says: 2-2
echo1 says: 1-2
echo1 says: 1-3
echo1 success
echo2 says: 2-3
echo2 success

Contribute

If you have good idea or suggestion? Please, don't hesitate to open a pull request or send me an email.

Hope you enjoy building command line tool with Work!

About

Execute shell command and get output. Simple and robust.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages