ProcessRunner icon indicating copy to clipboard operation
ProcessRunner copied to clipboard

Execute child processes and system commands from Swift

ProcessRunner

ProcessRunner

Release Swift 5.0 Build Status codecov codebeat badge Linux Compatible

Easily execute system commands from a Swift script or command line tool.

Features

  • ✅ Easily execute child processes with arguments
  • ✅ Easily execute shell commands with arguments
  • ✅ Capture output or stream to stdout/stderr in real time
  • ✅ Swift Package Manager compatible
  • ✅ Linux compatible 🐧

🚀 Executing child Processes from Swift scripts and CLI tools

Running child processes in Swift is not hard with Process, but it can be a bit tedious and repetitive.

System makes this task extremely easy. If you are familiar with Ruby scripting (Rakefile, Fastlane, Danger, etc), you will feel like home.

💻 Automatically redirect output to stdout

import ProcessRunner

try system(command: "echo hello world") // prints "hello world" to stdout

✇ Capture process output

import ProcessRunner

let output = try system(command: "echo hello world", captureOutput: true).standardOutput
print(output) // prints "hello world"

✔️ Check if process terminated gracefully

import ProcessRunner

print(try system(command: "echo hello world").success) // prints "true"

|> Easily execute Shell commands with pipes and redirects

import ProcessRunner

try system(shell: "echo hello cat > cat && cat cat | awk '{print $2}'") // prints "cat" to stdout

Installation

Add ProcessRunner to your Package.swift:

import PackageDescription

let package = Package(
    name: "YourPackage",
    dependencies: [
        .package(url: "[email protected]:eneko/ProcessRunner.git", from: "1.0.0"),
    ],
    targets: [
        .target(
            name: "YourTarget",
            dependencies: ["ProcessRunner"]),
    ]
)

💌 Contact

Follow and/or contact me on Twitter at @eneko.

👏 Contributions

If you find an issue, just open a ticket on it. Pull requests are warmly welcome as well.

👮‍♂️ License

System is licensed under the MIT license. See LICENSE for more info.