3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

iRidgeAdvent Calendar 2020

Day 16

Mintをプロジェクトディレクトリにインストールする

Last updated at Posted at 2020-12-15

はじめに

Swift製コマンドラインツールのMintですが、複数のプロジェクトで使用されているビルドマシンにインストールせずにプロジェクトディレクトリ内にインストールし、プロジェクトごとに管理する様にしてみました。

Mintとは

mint_logo.png
https://github.com/yonaskolb/Mint

Swift製コマンドラインツールのインストールと実行を行うパッケージマネージャーです。
以下の様なパッケージを管理できます。

  • XcodeGen
  • SwiftLint
  • SwiftGen
  • Carthage
  • LicensePlist

普通にインストールした場合は、
packageは/usr/local/lib/mintにインストールされ、
packageをbuildしたcommandのリンクは/usr/local/binにインストールされます。

プロジェクトディレクトリにインストール

MintのREADME.mdによると、以下の環境変数でインストール先を指定できるという事なのでこれらを使用します。

  • MINT_PATH : packageのインストール先ディレクトリ
  • MINT_LINK_PATH : packageをbuildしたcommandのリンクのインストール先ディレクトリ

1. Mintのディレクトリを作成しクローンする

プロジェクトディレクトリ内にMint用のディレクトリを作成しその中にクローンします。

$ mkdir mint
$ tree
.
├── Mintfile
└── mint

1 directory, 1 file
$ cd mint
$ git clone https://github.com/yonaskolb/Mint.git
Cloning into 'Mint'...
remote: Enumerating objects: 36, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 1952 (delta 10), reused 17 (delta 6), pack-reused 1916
Receiving objects: 100% (1952/1952), 357.89 KiB | 669.00 KiB/s, done.
Resolving deltas: 100% (1113/1113), done.
$  cd ..
$ tree
.
├── Mintfile
└── mint
    └── Mint
        ├── CHANGELOG.md
        ├── LICENSE
        ├── Makefile
        ├── Package.resolved
        ├── Package.swift
        ├── README.md
        ├── Sources
        │   ├── Mint
        │   │   └── main.swift
(一部省略)
10 directories, 42 files

2. パスを指定してインストール

MINT_PATH, MINT_LINK_PATHを指定してインストールする

$ cd mint/Mint
$ export MINT_PATH="../lib" MINT_LINK_PATH="../bin"
$ swift run mint install yonaskolb/mint
Fetching https://github.com/jakeheis/SwiftCLI.git
(一部省略)
[70/70] Linking mint
🌱 Finding latest version of mint
🌱 Cloning mint 0.16.0
🌱 Resolving package
🌱 Building package
🌱 Installed mint 0.16.0
🌱 Linked mint 0.16.0 to /Users/User_Name/projects/mint_test/mint/bin
$ cd ../..
$ tree
.
├── Mintfile
└── mint
    ├── Mint
    │   ├── CHANGELOG.md
 (一部省略)
    ├── bin
    │   └── mint -> /Users/User_Name/projects/mint_test/mint/lib/packages/github.com_yonaskolb_mint/build/0.16.0/mint
    └── lib
        ├── metadata.json
        └── packages
            └── github.com_yonaskolb_mint
                └── build
                    └── 0.16.0
                        └── mint

16 directories, 45 files

3. シンボリックリンクを変更

上のログを確認してもらうとmint/bin/mintのリンクが絶対パスになっているのが分かると思います。
ビルドマシンなどで実行できなくなるので、これを相対パスに変更します。

$ cd mint/bin
$ export mint_bin_path=$(find ../lib/packages/github.com_yonaskolb_mint/build/*/mint)
$ ln -sf $mint_bin_path mint
$ tree
.
└── mint -> ../lib/packages/github.com_yonaskolb_mint/build/0.16.0/mint

4. Packagesをインストール

Mintfileに設定してあるpackageをインストールします。

$ export MINT_PATH="mint/lib" MINT_LINK_PATH="mint/bin"
$ mint/bin/mint bootstrap
🌱 Cloning SwiftLint 0.41.0
🌱 Resolving package
🌱 Building package
🌱 Installed SwiftLint 0.41.0
🌱 Cloning XcodeGen 2.18.0
🌱 Resolving package
🌱 Building package
🌱 Copying resources for XcodeGen: SettingPresets ...
🌱 Installed XcodeGen 2.18.0
🌱 Installed 2/2 packages
$ mint/bin/mint run xcodegen --version
Version: 2.18.0

シェルスクリプト

MINT_PATH, MINT_LINK_PATHを指定してインストールしたり実行するのが面倒なのでシェルスクリプトを作成しました。
https://github.com/yd2x/mint_sh

使用方法:
$ tree
.
├── Mintfile
├── mint
└── mint.sh

1 directory, 2 files

[インストール]
$ sh mint.sh --install    

[packageインストール]
$ sh mint.sh bootstrap

[package実行]
$ sh mint.sh run xcodegen

References

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?