LoginSignup
7

More than 5 years have passed since last update.

え、git pushしてtagをインクリメントしてCocoaPodsのpodspecを更新するのって手動でやってるんですか?

Last updated at Posted at 2014-03-18

更に後日

今はpod repo push使ってます。

後日談

エラー処理とかちゃんと書いてなく激しくバギーでトラブルが発生した場合に逆に時間がかかるから今は手作業だよ!!!!


はい、手動でやってます。

数えた所ここ2ヶ月で100回程度更新しているので、1回1分計算でpodspecの更新にきっと100分くらい費やしていることになります。

そんな疑問をつぶやいたところ

という諸先輩方の温かいご助言がありましたが、bashを書いたことないので

bashのお作法を覚える > Objective-Cで書く

という結論からObjective-Cでupspecを作りました。UNIX実行ファイルが出来上がります。

いくつかの前提

  • 僕は汎用ライブラリはGitHubで、プライベートなライブラリは別サーバで管理しています。
  • なので本家のCocoaPods/Specsの話ではないですよ
├── podspec
    └── project1
        └── 0.0.1
            └── project1.podspec
        └── 0.0.2
            └── project1.podspec        
    └── project2
        └── 0.0.1
            └── project2.podspec
├── project1
└── project2

ローカルはこんなディレクトリ構成で運用しています。

  • podspecでバージョンを上げるだけの本当に単純な更新の話です。

出来ること(※上記フォルダ構成)

  1. project1で必要なcommitを全て済ます
  2. project1でupspecを実行

すれば

  1. project1にgit tag 0.0.3を追加
  2. project1をgit push
  3. podspec/project1/0.0.3/project1.podspecを生成(0.0.2のコピー)
  4. podspec/project1/0.0.3/project1.podspecのs.versionを0.0.3に更新
  5. podspecをgit push

が実行されます。

導入方法

  1. upspec.xcodeprojをビルド
  2. upspec/upspec/Build/Products/Debug/upspecというUNIX実行ファイルが出来てるのでそれを/usr/binとかパスが通っているところに適宜置く

課題

  • 今作業しているプロジェクトでのpod updateまで行いたかったのですが、複雑になりすぎるので諦めました。(実装が複雑というか運用し辛い場面が多そう)
  • ビルドした後のUNIX実行ファイルを'/usr/bin'に直接置く方法がわからなかった。(ここを参考に試してみたけどDebugとかReleaseをディレクトリを作成しないって出来るのかな・・・)

bashのスゴイ人へ

これbashを熟知してる方だったらどれくらいで書けるものなんでしょうね。僕はbashの各コマンドやら正規表現とかを調べるならFoundation.frameworkを使った方が早いと思った次第です。全部で4時間くらいかかりました。(結局bashを調べなきゃダメだったし、OS XとiOSとの違いでつまづいた所も・・・)

あと400回podspecを更新すれば元が取れる計算です。

よくありそうな質問

  • そもそもpodspecってそんな更新しないよね

    そうなんですか?(;´Д`)
    僕はversionだけ更新することすごい多いんですが・・・
    
  • こんなディレクトリ構成で運用してねぇよ

    ・・・コードを書き換えて下さい(;´Д`)
    
  • s.version決め打ちにしてるよね、などなど

    ・・・コードを書き換えて下さい(;´Д`)
    

免責事項

一応書いておきますが、upspecの使用によって生じる損害の責任は負いませんので、使用は 自己責任 でお願いします!

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
7