参考:
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里运行,就能在控制台里看到输出内容
image.png
三、 使用命令行调用运行
3.1 找到生成的项目
Product
->Show Build Folder In Finder
/Users/xxx/Library/Developer/Xcode/DerivedData/xxxx/Build/Products/Debug/xxxx
3.2 将这个生成的可执行文件拷贝到摸个地方或直接在这里运行就可以
直接在命令行里以相对路径或绝对路径调用执行
# 直接调用执行
/Users/xxx/Library/Developer/Xcode/DerivedData/xxxx/Build/Products/Debug/xxxx
image.png
参数传递与解析
参考: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、获取入参:
let list = Swift.CommandLine.arguments
# 第一个参数是执行文件的路径,后续就是传入的文件
image.png
命令行执行效果
image.png
引入一个解析参数的库
CommandLineKit
可以使用Podfile的方式引入,也可以使用package的方式引入,我直接使用把代码拖到项目里的方式引入
代码调用
// 原始的获取参数的方式
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)")
运行效果:
image.png
网友评论