Edited at

Mint で Swift 製のコマンドラインツールを管理する

More than 1 year has passed since last update.

iOS アプリや macOS アプリの開発にあたって、開発を補助するためのコマンドラインツールを使うことがよくあります。その際に、それらのツールを開発環境やビルド環境にどうインストールしてどう管理するか、というのは注意を払っておくべきことのひとつです。

macOS にコマンドラインツールを入れる手段としては Homebrew が手軽でありメジャーです。ただ、実際の開発では、プロジェクトごとに使うツールのバージョンを指定したいことがあると思います。Homebrew はそういった細かい用途には向いていません。

そんな場合に Mint が便利です。Mint は Swift Package Manager ベースで開発された Swift 製コマンドラインツールを管理するためのツールです。

例えば、SwiftLintCarthage といったツールが管理できます。Mint を使うと、複数のバージョンをインストールしておき、バージョンを指定して実行することが可能になります。


Mint のインストール

Mint 自体は Homebrew でインストールできます。

brew tap yonaskolb/Mint https://github.com/yonaskolb/Mint.git

brew install mint


ツールのインストール&実行

Mint でツールをインストールするには次のようにします。

mint install name/repo

引数には GitHub のリポジトリ名を指定します。あるいは git リポジトリの URL でも良いです。

例えば SwiftLint をインストールするには次のようにします。

mint install realm/swiftlint

これを実行すると、Mint 管理下のフォルダ(/usr/local/lib/mint)に対象のソースコードがダウンロードされて Swift PM でビルドされます。

その後、デフォルトでは、グローバル(/usr/local/bin)にコマンドがインストールされます。以後は mint を使わずにツールのコマンドを直接実行できます。


グローバルにインストールしない場合

mint install のオプションとして --global=false を指定すると Mint 管理下にのみインストールされます。この場合、インストールしたツールを実行するには mint run を使います。

例えば Mint 管理下の SwiftLint を実行するには次のようにします。

mint run realm/swiftlint swiftlint

つまり、実行したいコマンドの前に mint run realm/swiftlint をつけるということになります。

コマンドに引数を渡す場合はさらに後ろに続けます。例えば swiftlint version を実行するなら次のようにします。

mint run realm/swiftlint swiftlint version

なお、実は mint run は、まだ mint install されていなかった場合はインストールもしてくれます(この際はグローバルへのインストールは行われません)。


バージョンを指定してインストール&実行

mint install のときに、リポジトリ名の後ろにバージョンを指定すると、指定したバージョンをインストールできます。

mint install realm/swiftlint@0.24.2

mint run のときに、リポジトリ名の後ろにバージョンを指定すると、指定したバージョンを実行できます。

mint run realm/swiftlint@0.24.2 swiftlint

この方法を使うことで、冒頭に書いたような「プロジェクトごとに使うツールのバージョンを指定したい」というニーズに対応可能です。


インストールされているバージョンの確認

mint list コマンドでインストール済みのツールとバージョンが確認できます。

Installed mint packages:

Carthage
- 0.26.2
- 0.28.0
SwiftLint
- 0.24.2
- 0.25.0