RxShell 2.2.0

RxShell 2.2.0

Pedro Piñera 维护。



 
依赖
Shell= 2.2.0
RxSwift= 5.0.0
 

RxShell 2.2.0

🧪 Shell

Shell 是一个使用 Swift 编写的 µ-library,用于运行 shell 任务。

CircleCI Swift Package Manager Release Code Coverage Slack License

安装🛠

Swift 包管理器

在您的 Package.swift 文件中添加依赖

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

CocoaPods

将以下行添加到您的项目 Podfile 中

pod "Shell", "2.2.0"
pod "ShellTesting", "2.2.0"
pod "RxShell", "2.2.0"

Carthage

将以下行添加到您的项目 Cartfile 中

github "tuist/shell" "2.2.0"

Marathon

如果您想在Marathon脚本来使用Shell,可以将它添加到您的Marathonfile中(有关如何操作的说明请参阅Marathon代码库),或者使用内联依赖语法将Marathon指向Shell。

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

使用方法🚀

要在系统中运行命令,您需要创建一个Shell实例。

let shell = Shell()

Shell暴露了用于同步、异步运行命令和捕获输出的方法。

// 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"])

测试

我们了解到Swift中测试可能不方便,因此我们设计了Shell API以避免许多语法糖和静态接口来简化测试。该库附带有ShellTesting库,您可以将其导入测试目标中,以模拟Shell接口并存根命令运行的结果。

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"))

RxShell💃

Shell附带一个名为RxShell的包,它使用RxSwift为Shell接口添加了响应式扩展。

subject.run(["xcodebuild", "-project", "Shell", "-scheme", "Shell"]).subscribe {
  print("Compilation completed")
}

开发设置👩‍💻

  1. Git克隆: :tuist/shell.git
  2. 使用swift package generate-xcodeproj生成Xcode项目。
  3. 打开Shell.xcodeproj
  4. 享受乐趣🤖

开源

Tuist 是软件自由保守会的坚定支持者

Become a Conservancy Supporter!