文字っぽいの。

文字を書いています。写真も混ざります。

"carthage-verify" を使って `carthage bootstrap` 忘れを防ぐ

やりたいこと

CocoaPodsがビルド時に「pod install しないとだめだよ」とエラー吐いてくれるのが便利なので、Carthageでも同じことをやりたい。

実現方法

Carthage公式のworkflowsというリポジトリcarthage-verify というスクリプトがあるので、そちらを使います。

github.com

手順

まずは carthage-verify をcloneするなりDownloadするなりして、手元に持ってきます。ディレクトリ構成としては、下記のように scripts ディレクトリを作って、その中に入れてあげます。

.
├── sample.xcodeproj
├── sample.xcworkspace
└── scripts
    └── carthage-verify <- [コレ!]

次にBuild PhasesにScript Phaseを追加していきます。こんな感じです。

f:id:FromAtom:20180104190320p:plain

下記はコピペ用のスクリプトです。

./scripts/carthage-verify
if [ $? != 0 ] ; then
    # print error to STDERR
    echo "error: The sandbox is not in sync with the Cartfile.resolved. Run 'carthage bootstrap --
    platform iOS --use-ssh --no-use-binaries --cache-builds' or update your Carthage installation." >&2
    exit 1
fi

結果

わざと手元の ./Carthage 内を古い状態にして、ビルドしてみると、

f:id:FromAtom:20180104190958p:plain

このようにちゃんとエラーを出してくれます。良かったですね。

参考文献

こちらのスライドを参考にしました。

speakerdeck.com