Command Line Tool using Swift Package Manager and Utility package
Recently I had to build a Command Line Tool second time in one month, so I decided to document the setup I use.
The simplest way to create a Command Line Tool is to use Xcode template. But it lacks a crucial part — argument parsing. Swift Package Manager contains Utility package that has exactly what we need.
Without further do, here are the steps:
1. Create and navigate to a directory for the command line tool
mkdir commandlinetool
cd commandlinetool
By default, the name of the directory will be the name of Xcode target and the tool.
2. Create Swift package with type executable
swift package init --type executable
This will create initial files and folders including hidden .gitignore
and .build/
.
3. Add dependencies in Package.swift
open Package.swift
We need to add "https://github.com/apple/swift-package-manager.git"
to the package dependencies and "Utility"
to the target.
The latest release can be found here: https://github.com/apple/swift-package-manager/releases/latest
4. Generate Xcode project
swift package generate-xcodeproj
Xcode project is generated and excluded from git by default.
You can also use your xcconfig file.
swift package generate-xcodeproj --xcconfig-overrides Config.xcconfig
Here is an example with the latest macOS deployment target and Swift version.
Enjoy
That’s pretty much it. Now you can start adding code in main.swift
I did not found official documentation for ArgumentParser
. But it is open source and not hard to start using it.
Hope you find this useful. If you like the article, please follow me and share.
Show authors more ❤️ with 👏’s
And hope to see you next time 😊