まえがき
SwiftはiOSアプリ開発のための言語というイメージですが、
やろうと思えばサーバーサイドの開発や、コマンドラインツールの開発にも採用することが出来ます。
Xcode上でコマンドラインツールの開発プロジェクトを作ることができるのを最近知ったので、
実際にSwift製コマンドラインツールを作ってみましょう。
Xcodeプロジェクト作成
- Xcodeの File... -> New -> Package... から新規プロジェクトを作成します。
- 種類はmacOS -> Command Line Toolを選びます。
作ると↓こんな感じになります。
ライブラリを導入する
外部ライブラリの導入もできます。
File... -> Add Package Dependencies... で
検索窓にgithubのリポジトリのURLを直接入れて検索ができます。
ここではSwifterSwiftを入れてみます。
Add PackageでSwifterSwiftを入れた後、
XcodeプロジェクトのBuild Phases
-> 「Target Dependencies」「Link Binary With Libraries」
にSwifterSwiftを追加します。
プログラムを書く
main.dartにプログラムを書きます。
import Foundation
import SwifterSwift
print("Hello, World!")
let arguments = ProcessInfo.processInfo.arguments
func main() -> Int {
for arg in arguments.enumerated() {
if arg.offset == 0 {
print("product path: \(arg.element)")
continue
}
print(arg.element)
if let intValue = arg.element.int {
print("this is number: \(intValue)")
} else {
print("this is not number!!")
}
}
return 0
}
_ = main()
ビルドして実行ファイルを作る
Xcodeの再生ボタンからビルドします。
プログラムで引数を取得していますが、第一引数が実行ファイルの出力先パスになるので、
それを参照して実行ファイルをどこか使いたい場所にコピーします。
(もっとスマートなやり方があればコメントお願いいたします)
これで作成は完了です。
ターミナルから実行する
ターミナルから実行ファイルを実行します。
$ ./ForQiita 12 123 333 hoge fuga 444
Hello, World!
product path: /Users/username/Documents/ForQiita/ForQiita/
12
this is number: 12
123
this is number: 123
333
this is number: 333
hoge
this is not number!!
fuga
this is not number!!
444
this is number: 444