昨年のエントリーに書いたように、Carthageのコミッターをしているid:ikesyoです。もう3日前になりますが、最新バージョンの 0.12: All Your Frameworks Are Belong To Usがリリースされました!🎉
今回のリリースで大きなトピックだと個人的に思う以下の3つを紹介します。
Carthage will now build all frameworks from all the projects in the repository
これまでCarthageでは、Dynamic frameworkのShared schemeを含む、ディレクトリ階層で最初に見つかった.xcodeproj/.xcworkspaceのプロジェクト1つだけをビルドの対象としていました。https://github.com/ankurp/Dollar.swiftのような複数の.xcodeprojによって複数のframeworkを提供するようなリポジトリとは相性が悪かったのですが、0.12ではDynamic frameworkのShared schemeを含んでさえいれば、全てのプロジェクトがビルド対象になるよう変更、改善されました。
archive now accepts multiple framework names and will archive all the frameworks from the current repository if no names are given
archiveコマンドはCarthage/Build以下にあるframeworkをまとめたzipファイルを生成するコマンドです。生成したzipファイルをGitHub Releaseに添付することで、Carthageがビルド済みバイナリーとしてそのframeworkを利用することができるようになっています。
これまでこのコマンドはcarthage archive Himotokiのように、アーカイブ対象のframework名を必ず1つだけ指定する必要がありました。それが0.12からはcarthage archive Cent Dollarのように複数のframework名を指定することができるようになりました。
またcarthage archiveとパラメーターを指定しないと、現在のプロジェクトのframeworkを全てアーカイブする(依存先のframeworkは含まない)、という使い方もできるようになっています。この場合の対象はcarthage build --no-skip-currentとしてビルドされるようになるものと同一です。1つ目の変更と合わせて使いやすくなったのではないかと思っています。😀
この変更は私が実装したものになります 💪
build, checkout, and update now take an optional list of dependencies
最後の1つです。今まではcarthage updateとして全ての依存ライブラリーをアップデートすることしかできませんでしたが、これも0.12からarchiveコマンドと同様に、carthage update Alamofire ReactiveCocoaのようにアップデート対象を指定することができるようになりました。
build, checkoutコマンドもこの改善をしていて、carthage build Alamofireのように特定のfraemworkのみを再ビルドすることもできます。これらはかなり以前から要望されていたものだったので、実装、リリースすることができてとても嬉しいですね。
この変更も私が実装しました 💪
すでに幾つかバグが報告されているため、近々0.12.1もリリースされると思います。Carthageユーザーの皆様におかれましてはバグ報告や要望など何かあれば、リポジトリのissueだけでなく、Twitterなどでも連絡いただければ確認しますのでお気軽に!