Swift的CLI框架:在iOS/macOS上创建控制台工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift的CLI框架:在iOS和macOS上创建控制台工具



长期以来,为Apple生态系统开发控制台应用程序(CLI — 命令行界面)一直是Python、Ruby或Bash的专利。然而,随着Swift及其强大工具集(包括Swift Package Manager(SPM))的出现,现在可以使用iOS/macOS的原生语言创建快速、类型安全且易于维护的控制台工具。在本文中,我们将详细介绍用于构建Swift CLI的主要框架——Apple的ArgumentParser,以及其他替代方案。



什么是Swift的CLI框架?



CLI框架是一个库,它负责处理命令行参数解析、帮助信息生成、错误处理和命令组织等日常任务。在Swift世界中,事实上的标准是ArgumentParser,它由Apple开发并属于Swift开源项目的一部分。它允许您声明式地描述工具的界面,其余工作由框架自动完成。



ArgumentParser的主要功能:

  • 声明式命令定义 — 您描述结构,框架自动解析参数。
  • 自动帮助信息 — --help和-h标志自动生成。
  • 支持嵌套命令(如git或swift中的命令)。
  • 类型验证 — 如果期望数字但传入了字符串,会显示清晰的错误信息。
  • 与SPM集成 — 只需在Package.swift中添加依赖即可。


安装和配置



您需要Swift 5.5+(建议使用5.7或更高版本)。通过SPM创建一个新的控制台项目:



mkdir MyCLIcd MyCLIswift package init --type executable


然后编辑Package.swift,添加对ArgumentParser的依赖:



// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyCLI", dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0") ], targets: [ .executableTarget( name: "MyCLI", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser") ] ) ])


现在更新依赖并打开项目:



swift package updateopen Package.swift   # 将在Xcode中打开


创建第一个命令



创建文件main.swift(或Sources/MyCLI/main.swift),内容如下:



import ArgumentParser

struct Greet: ParsableCommand { static let configuration = CommandConfiguration( abstract: "用户问候", discussion: "此命令输出个性化的问候语。" )

@Argument(help: "用户名") var name: String

@Option(name: .shortAndLong, help: "重复次数") var count: Int = 1

@Flag(name: .shortAndLong, help: "显示版本") var verbose: Bool = false

mutating func run() throws { if verbose { print("版本 1.0.0") } for _ in 0..<count { print("你好,\\(name)!") } }}

Greet.main()


现在编译并运行:



swift run MyCLI Swift --count 3# 输出:# 你好,Swift!# 你好,Swift!# 你好,Swift!

swift run MyCLI --help# 用法:MyCLI <name> [--count <count>] [--verbose]# 用户问候# ...


嵌套命令(子命令)



要创建复杂的工具(例如

推荐