podspec(cocoapods)のバージョンを更新するコマンドラインツールを書いた
CocoaPods
CocoaPodsはObjective-Cにおけるパッケージ管理ツールです。 gemとかnpmとかCPANみたいな立ち位置のツールです。
基本的にはgemと似せていて、ライブラリをパッケージ登録する際には、
podspecというファイルを作って、
それをpod trunk push
で公開用に登録する感じです。
アップデートプロセス
podspecファイルに一度書いたクラスのパスやメタ情報はあんまり更新しないのでいいですが、
s.version = '3.1.0'
というようなバージョン情報はアップデートの度に更新しないと行けません。
手動でやるのはない感じがしたので、色々探したのですが今のところそういうバージョン情報を自動的に更新してくれるツールがないようです。
podspec-bump
そこで、azu/podspec-bumpというコマンドラインツールを書きました。
機能としてはシンプルでpodspecファイルのバージョン周りだけを扱います。 (release-itのようにgit tagなどまではやらない)
- podspecバージョン情報の更新
-w
を付けない場合はdry-runなので書き込まない- Semantic Versioningで更新できる
- podspecバージョンの表示
インストール
cocoapodsがrubyなので、rubyで書くべきなんですが時間がなかったのでnodeで書きました。 (他の実装みても何か正規表現でバージョン取り出してたのでまあいいかなとか思ってしまった)
npm install -g podspec-bump
使い方
デフォルトでは、実行したディレクトリにある*.podspec
ファイルを自動で選択してくれます。
特定のファイルを指定したい場合は-p
で指定出来ます。
$ podspec-bump -h
Usage: podspec-bump <increment> [options]
-h, --help displays help
-w, --write write incremented version
-i, --increment String Incrementing "major", "minor", or "patch" version; or specify version [default: "patch"]
-p, --path String path to podspec
先ほども書いていたように、デフォルトではdry-runなのでバージョンの書き換えを反映したい場合は-w
オプションを付けて下さい。
$ podspec-bump -w
Incrementing version
<increment>
には “major”, “minor”, or “patch” , 特定の値が指定出来ます。
(デフォルトは”patch”です)
例えば、現在が1.0.0
の時にpatchアップデートしたら1.0.1
になる感じですね。
(minorなら1.1.0
、majorなら2.0.0
という感じです)
$ podspec-bump major -w
# or
$ podspec-bump -i 1.2.3 -w
Specific podspec file
特定のファイルを指定した場合は-p
でファイルパスを指定する事で出来ます。
$ podspec-bump -p /path/to/example.podspec
Dump version
その、podspecファイルに書かれているバージョンを取得したい場合は--dump-version
オプションをつけると出来ます。
本来は、cocoapods自体が提供して欲しいのですがなかったのでつけました。
$ podspec-bump --dump-version
0.1.0
これを応用すれば、コマンドを組み合わせて、podspecの更新を公開するまでが自動化できると思います。
pod trunkの自動化
先ほど書いていた自動化の例です。
- podspecのバージョン更新
- git tag
- pod trunk push
という感じのは、以下みたいにかけますね。
podspec-bump -w # update version
git commit -am "bump `podspec-bump --dump-version`"
git tag "`podspec-bump --dump-version`"
git push --tags
pod trunk push
Contributing
azu/podspec-bump からContributing募集しています。
おわりに
最近を小さいライブラリを書いては公開するのを繰り返してるので、 このpodspecのアップデートをする作業がとても面倒だったので作ってみました。
公式にそれっぽい事をやれそうなCocoaPods/VersionKitというのがあるので、ruby版とか作ってくれると皆幸せになるんじゃないですかね。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。