Swiftpack.co - Kitura/ShellToolKit as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by Kitura.
Kitura/ShellToolKit 0.2.1
Utility classes to help with common system/shell actions in Swift
⭐️ 0
🕓 2 days ago
macOS
.package(url: "https://github.com/Kitura/ShellToolKit.git", from: "0.2.1")

ShellToolKit

build status macOS Linux Apache 2

`ShellToolKit` is a set of classes that are typically useful when using Swift as a command-line tool.

Installation

Swift Package Manager

import PackageDescription

let package = Package(
    name: "YourAwesomeSoftware",
    dependencies: [
        .package(url: "https://github.com/Kitura/ShellToolKit.git", from: "0.1.0")
    ],
    targets: [
        .target(
            name: "MyApp",
            dependencies: ["ShellToolKit"]
        )
    ]
)

swift-sh

#!/usr/bin/swift sh

import ShellToolKit          // @Kitura


System Action

Currently the only class supported is SystemAction which allows command-line tools to more easily support variations of verbose/dry-run. It uses the Rainbow library for colorized output and SwiftShell for executing commands.

A typical swift-argument-parser based program may look something like this:


import ArgumentParser   // https://github.com/apple/swift-argument-parser.git

struct BuildCommand: ParsableCommand {
   @Flag(name: .shortAndLong, help: "Enable verbose mode")
   var verbose: Bool = false

   @Flag(name: [.customLong("dry-run"), .customShort("n")], help: "Dry-run (print but do not execute commands)")
   var enableDryRun: Bool = false


   mutating func run() throws {
       let actions: SystemAction
       
       if enableDryRun {
           actions = CompositeAction([SystemActionPrint()])
       } else if verbose {
           actions = CompositeAction([SystemActionPrint(), SystemActionReal()])
       } else {
           actions = CompositeAction([SystemActionReal()])
       }
    
       try actions.runAndPrint(command: "echo", "Hello", "World!")
   }

}
References

Capturing stdin/stdout

Related/interesting projects

GitHub

link
Stars: 0
Last commit: 2 days ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Dependencies

Release Notes

Initial release
51 weeks ago

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics