以下のリポジトリのcarthageディレクトリ以下に便利ツールを公開しました。https://github.com/toshi0383/scriptscmdshelfでのご利用が一部必須になっています。https://github.com/toshi0383/cmdshelfCarthageのイケてないところまずはなぜこういうものが必要だったのかの動機についてです。手作業多いCocoaPodsだと自動でやってくれるようなことも、Carthageでは手作業が必要になります。単純なことしかしないのがいいところなのですが、例えば以下のような作業は結構面倒なものです。追加/削除する更新時に古いbcsymbolmapを探して削除するCodeCoverage設定問題XcodeGenを使うと1つ目は気にしなくて良くなるのですが、どうしても後の2つは手作業と指差し確認が必要ですね。ある全部のリポジトリをfetchしてしまいます。依存関係がある場合に必要なのはわかるのですが、明らかに依存がないことがわかっている場合は、不要な処理ですよね。私の環境だと特にRxSwiftのfetchが延々終わらないことがあったので、そうなると結構辛いです。間違ってもControl+Cでキャンセルしてはいけません。processをkillすることができないらしく、非同期のfetch&buildのプロセスがゾンビ化します。標準出力に書いてきます。するか、終わるまでおとなしく待つしかなくなります。更新時に古いbcsymbolmapを探して削除するCodeCoverage設定問題どうしてもbcsymbolmapが見つからない場合もあるので、そういう場合はメッセージを出力してます。CodeCoverage問題が見つかった場合自動で直しますが、その場合ライブラリ管理者に連絡するよう促しています。YESになっていました。ライブラリ管理者に連絡するべきかもしれません。終わったらちゃんとCartfileとCartfile.resolvedは元に戻して、更新を反映します。CircleProgressButtonとか書いてもらえれば便利に使えます。CircleProgressButtonのようにプロセスに環境変数を渡します。どちらのスクリプトも泥臭い処理をベタベタ書いてるだけなので、ここでの解説は省きます。各スクリプト冒頭にドキュメントがあるので気になる方はご確認ください。まとめ仕事で必要に駆られて作ったものですが、公開したほうが色々いいことがあると思うので、公開できない部分は削除した上でとりあえず公開しました。使うことになっています。指定しているので、運用と合わない場合はごめんなさい。みなさんも似たようなスクリプトを書いて運用されているとは思うので、「こうしたほうがいい」や「もっといいツールがある」などあればぜひ教えてください。ツッコミや質問などブコメやTwitterで受け付けますのでお気軽にどうぞ。リポジトリへのプルリクもお待ちしています。*1:0.26.0以降のCarthageでは、CodeCoverage設定問題は解決しているようです。やってみたら不要なFetchが終わらなくなることはなかったので、もしかしたら最新版では挙動改善したのかもしれません。0.28.0で確認しました。