8000 GitHub - aaabbbccc2018/shell: 🧪 Shell is a µ-library written Swift to run system commands
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

🧪 Shell is a µ-library written Swift to run system commands

License

Notifications You must be signed in to change notification settings

aaabbbccc2018/shell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧪 Shell

Shell is a µ-library written Swift to run shell tasks.

CircleCI Swift Package Manager Release Code Coverage Slack License Say Thanks! Join the community on Spectrum

Install 🛠

Swift Package Manager

Add the dependency in your Package.swift file:

let package = Package(
    name: "myproject",
    dependencies: [
        .package(url: "https://github.com/tuist/shell.git", .upToNextMajor(from: "1.0.2")),
        ],
    targets: [
        .target(
            name: "myproject",
            dependencies: ["shell"]),
        ]
)

CocoaPods

Add the following line to your project Podfile:

pod "Shell", "1.0.2"

Carthage

Add the following line to your project Cartfile:

github "tuist/shell" "1.0.2"

Marathon

If you want to use Shell in a Marathon script, either add it to your Marathonfile (see the Marathon repo for instructions on how to do that), or point Marathon to Shell using the inline dependency syntax:

import Shell // https://github.com/tuist/shell.git

Usage 🚀

To run commands in the system, you need to create an instance of Shell:

let shell = Shell()

Shell exposes methods for running the commands synchronously, asynchronously, and capturing the output:

// Synchronous running
let result = shell.sync(["xcodebuild", "-project", "Shell", "-scheme", "Shell"])

// Asynchronous running
shell.async(["xcodebuild", "-project", "Shell", "-scheme", "Shell"]) { result in
  // Process the result
})

// Capturing output
let result = shell.capture(["xcode-select", "-p"])

Testing ✅

We understand how inconvenient testing might be in Swift and thus, we designed Shell's API to facilitate testing by avoiding many syntactic sugar and static interfaces. The library comes with a library, ShellTesting that you can import in your tests target to mock the Shell interface and stub the result of running commands:

import ShellTesting

let mock = Shell.mock()
let xcodebuild = XcodeBuild(shell: mock)

shell.succeed(["xcodebuild", "-project", "Shell.xcodeproj", "-scheme", "Shell"])

XCTAssertNoThrow(try xcodebuild.build(project: "Shell.xcodeproj", scheme: "Shell"))

Setup for development 👩‍💻

  1. Git clone: git@github.com:tuist/shell.git
  2. Generate Xcode project with swift package generate-xcodeproj.
  3. Open Shell.xcodeproj.
  4. Have fun 🤖

Open source

Tuist is a proud supporter of the Software Freedom Conservacy

Become a Conservancy Supporter!

About

🧪 Shell is a µ-library written Swift to run system commands

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0