CocoaPods Trunkを利用したライブラリの追加方法

CocoaPodsLogo

Objective-Cの勉強を始めてまだ一ヶ月にも満たないのですが、CocoaPodsのPodライブラリを開発&公開してみたくなり、西暦から和暦に変換するライブラリを書いて公開しました。コード的には微妙な箇所が多いですが、まずはライブラリ公開をゴールとしたかったので改善は後回しとします。

Podライブラリは今までGitHubのPull Requestで追加していたのですが、ちょうど一週間前より仕様変更がありまして、TrunkというAPIサービスを利用して追加する方式にかわりました。使ってみたのですが、驚くほど簡単でしたので公開方法についてまとめます。

CocoaPodsライブラリ登録までの流れ

初めて登録する場合は下記の通りとなります。1番、5番は2回目以降は不要となります。

  1. pod lib create #{library_name}
  2. ライブラリの追加
  3. .podspecファイルの修正
  4. pod lib lint
  5. pod trunk register #{email} #{your_name} —description=‘#{description_of_this_account}’
  6. pod trunk push #{podspec_name_path}

それでは各コマンドについて説明します。

pod lib create #{library_name}

CocoaPodsライブラリのひな形を作ります。

pod lib create
[!] A name for the Pod is required.

Usage:

    $ pod lib create NAME [TEMPLATE_URL]

      Creates a scaffold for the development of a new Pod according to the CocoaPods
      best practices. If a `TEMPLATE_URL`, pointing to a git repo containing a
      compatible template, is specified, it will be used in place of the default one.

Options:

    --silent    Show nothing
    --verbose   Show more debugging information
    --no-ansi   Show output without ANSI codes
    --help      Show help banner of specified command

実行すると下記の構成でひな形が作成されます。Pod登録時に必須となるLICENSEファイルも自動で作られるのでおすすめです。

$ pod lib create Foo
Cloning `https://github.com/CocoaPods/pod-template.git` into `Foo`.
Configuring Foo template.

To learn more about the template see `https://github.com/CocoaPods/pod-template.git`.
To learn more about creating a new pod, see `http://guides.cocoapods.org/making/making-a-cocoapod`.
$ tree Foo/
Foo/
├── Assets
├── CHANGELOG.md
├── Classes
│   ├── ios
│   └── osx
├── Example
│   └── Podfile
├── Foo.podspec
├── LICENSE
├── README.md
└── Rakefile

5 directories, 6 files

ライブラリの追加

Classes内に実装したヘッダー、実装ファイルを追加してコミットしてください。登録するファイルはコミットされていないと大正となりません。

.podspecファイルの修正

ライブラリの作成者やリポジトリの場所などの情報をまとめた.podspecファイルを修正します。下記は先日自分が公開した西暦から和暦に変換するPodライブラリの一例です。

Pod::Spec.new do |s|
  s.name         = "JapaneseCalendarYear"
  s.version      = "0.0.1"
  s.summary      = "Calculate japanese calendar year from current year."
  s.homepage     = "https://github.com/hypermkt"
  s.license      = "MIT"
  s.author       = { "hypermkt" => "#{email}" }
  s.social_media_url   = "https://twitter.com/hypermkt"
  s.platform     = :ios
  s.source       = { :git => "https://github.com/hypermkt/JapaneseCalendarYear.git", :tag => s.version.to_s }
  s.source_files  = "Classes/*.{h,m}"
  s.requires_arc = true
end

pod lib lint

Pod公開前にバリデーションチェックを行います。LICENSEファイルがあるか、.podspecファイルの文法は正しいか、リモートリポジトリは存在するかなどのチェックがされます。ソースコードはリモートリポジトリ基準となりますので、ローカルで修正したらpush後にlintしてください。

 pod lib lint

 -> JapaneseCalendarYear (0.0.1)

JapaneseCalendarYear passed validation.

pod trunk register #{email} #{your_name} —description=‘#{description_of_this_account}’

初回はユーザーアカウント登録が必要となるので、下記コマンドを実行します。

pod trunk register #{email} hypermkt --description='My Laptop'
[!] Please verify the session by clicking the link in the verification email that has been sent to #{email}

実行すると下記確認メールが登録メールアドレス宛に届きますので、確認用URLをクリックしてください。クリックすれば登録完了です。

Hi hypermkt,

Please confirm your registration with CocoaPods by clicking the following link:

https://trunk.cocoapods.org/sessions/verify/#{key}
If you did not request this you do not need to take any further action.

Kind regards, the CocoaPods team

pod trunk push #{podspec_name_path}

pushコマンドでPodを登録します。驚くことに下記コマンドを1回実行するだけで完了です。

pod trunk push JapaneseCalendarYear.podspec
Validating podspec
 -> JapaneseCalendarYear (0.0.1)

  - Data URL: https://raw.githubusercontent.com/CocoaPods/Specs/9aed9c8857ec20f00f5cee8cfc73e68c502bfe70/Specs/JapaneseCalendarYear/0.0.1/JapaneseCalendarYear.podspec.json
  - Log messages:
    - May 25th, 22:57: Push for `JapaneseCalendarYear 0.0.1' initiated.
    - May 25th, 22:57: Push for `JapaneseCalendarYear 0.0.1' has been pushed (1.104098643 s).

正常に処理されるとすぐにCocoaPods公式よりすぐにツイートされ、ライブラリがリポジトリに登録されます。

初ツイート

実際にPodfileに記述してpod installするとインストールできた!!!

pod install
Analyzing dependencies
Downloading dependencies
Installing JapaneseCalendarYear (0.0.1)
Generating Pods project
Integrating client project

[!] From now on use `test001.xcworkspace`.

と流れをまとめましたが、TrunkのおかげでPodライブラリの公開が全自動かつ即公開となりました。これからもTrunkを利用してPodライブラリをどんどん公開できるようがんばります!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする