Swift 命令

SPM CocoaPods CI Status License Platform

用于运行命令的 Swift 实用工具。

Commands 模块允许你将系统命令作为字符串,并返回标准输出。

API 文档可以在这里找到.

用法

import Commands

Bash

执行 shell 命令。

let result = Commands.Task.run("bash -c ls")

或者

let result = Commands.Task.run(["bash", "-c", "ls"])

或者

let result = Commands.Bash.run("ls")

Python

执行 python 脚本。

let result = Commands.Task.run("python main.py")

执行 python 命令。

let result = Commands.Task.run("python -c import base64; print(base64.b64encode(b'qiuzhifei').decode('ascii'))")

或者

let result = Commands.Python.run("import base64; print(base64.b64encode(b'qiuzhifei').decode('ascii'))")

Ruby

执行 ruby 脚本。

let result = Commands.Task.run("ruby main.rb")

执行 ruby 命令。

let result = Commands.Task.run("ruby -e require 'base64'; puts Base64.encode64('qiuzhifei')")

或者

let result = Commands.Ruby.run("require 'base64'; puts Base64.encode64('qiuzhifei')")

别名

为命令创建一个快捷名称。

let node = Commands.Alias("/usr/local/bin/node", dashc: "-e")
let result = node.run("console.log('qiuzhifei')")

设置全局环境变量

Commands.ENV.global["http_proxy"] = "http://127.0.0.1:7890"
Commands.ENV.global.add(PATH: "/Users/zhifeiqiu/.rvm/bin")

创建命令

let request: Commands.Request = "ruby -v"

或者

let request: Commands.Request = ["ruby", "-v"]

或者

let request = Commands.Request(executableURL: "ruby", arguments: "-v")

更改环境变量

var request: Commands.Request = "ruby -v"
request.environment?.add(PATH: "/usr/local/bin")
request.environment?["http_proxy"] = "http://127.0.0.1:7890"
request.environment?["https_proxy"] = "http://127.0.0.1:7890"
request.environment?["all_proxy"] = "socks5://127.0.0.1:7890"

let result = Commands.Task.run(request)

结果处理器

返回在子进程中运行 cmd 的 Commands.Result

let result = Commands.Task.run("ruby -v")
switch result {
case .Success(let request, let response):
  debugPrint("command: \(request.absoluteCommand), success output: \(response.output)")
case .Failure(let request, let response):
  debugPrint("command: \(request.absoluteCommand), failure output: \(response.errorOutput)")
}

将 Commands 添加为依赖项

要在 SwiftPM 项目中使用 Commands 库,请将以下行添加到 Package.swift 文件中的依赖项中

let package = Package(
    // name, platforms, products, etc.
    dependencies: [
        .package(url: "https://github.com/qiuzhifei/swift-commands", from: "0.6.0"),
        // other dependencies
    ],
    targets: [
        .target(name: "<command-line-tool>", dependencies: [
            .product(name: "Commands", package: "swift-commands"),
        ]),
        // other targets
    ]
)

CocoaPods (OS X 11.0+)

你可以使用 CocoaPods 来安装 Commands,方法是将其添加到你的 Podfile

pod 'Commands',        '~> 0.7.0'

快速入门

git clone https://github.com/QiuZhiFei/swift-commands
cd swift-commands && open Package.swift

参考