Help us understand the problem. What is going on with this article?

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした