创建CommandTool项目,swift自定义执行脚本项目
参考:
FengNiao
如何使用Swift来实现一个命令行工具
Swift 开发命令行工具
CommandLineKit 解析命令行参数
Rainbow 输出有颜色的内容
本文完整代码:https://github.com/h42330789/TestCommandLine
一、创建项目 1.1 创建一个新项项目选择macOS
->Command Line Tool
1.2 或者在一个已经存在的项目里新建一个target, +
->macOS
->Command Line Tool
二、点击运行, 2.1 直接在xcode里运行,就能在控制台里看到输出内容
三、 使用命令行调用运行 3.1 找到生成的项目 Product
->Show Build Folder In Finder
/Users/xxx/Library/Developer/Xcode/DerivedData/xxxx/Build/Products/Debug/xxxx
3.2 将这个生成的可执行文件拷贝到摸个地方或直接在这里运行就可以 直接在命令行里以相对路径或绝对路径调用执行
1
2
# 直接调用执行
/Users/xxx/Library/Developer/Xcode/DerivedData/xxxx/Build/Products/Debug/xxxx
参数传递与解析
参考:https://github.com/IngmarStein/CommandLineKit
1、设置运行模拟参数,方便debug调试
Product
->Scheme
->Edit Scheme
->Run
->Arguments
->Arguments Passed On Launch
添加的参数如下 -f aa/bb/test.txt -name jim -age 10
\
2、获取入参:
1
2
let list = Swift.CommandLine.arguments
# 第一个参数是执行文件的路径,后续就是传入的文件
引入一个解析参数的库 CommandLineKit 可以使用Podfile的方式引入,也可以使用package的方式引入,我直接使用把代码拖到项目里的方式引入
代码调用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 原始的获取参数的方式
let list = Swift.CommandLine.arguments
print(list)
// 使用CommandLineKit获取参数的方式
let cli = CommandLine()
let filePathParam = StringOption(shortFlag: "f", longFlag: "file", required: true,
helpMessage: "Path to the output file.")
let namePrams = StringOption(shortFlag: "n", longFlag: "name",
helpMessage: "user name.")
let agePrams = IntOption(shortFlag: "a", longFlag: "age",
helpMessage: "user age.")
cli.addOptions(filePathParam, namePrams, agePrams)
do {
try cli.parse()
} catch {
cli.printUsage(error)
exit(EX_USAGE)
}
print("File path is \(filePathParam.value ?? "")")
print("name is \(namePrams.value ?? "")")
print("age is \(agePrams.value ?? 0)")