LoginSignup
12

More than 5 years have passed since last update.

冒頭文つきで、CocoaPods経由のOSSのライセンス表記を自動化する

Last updated at Posted at 2016-04-16

はじめに

CocoaPods経由でOSSを複数インストールしていくとライセンス表記の追記作業を自動化したくなります。

Setting.bundleの中のAcknowledgements(謝辞)項目への追記作業を自動化する方法は、こちらの記事に詳しいです。

ライセンス表記の自動作成
http://qiita.com/mox2/items/545f1d39e4829907ac42

CocoaPods経由のOSSのみのライセンスだけを列挙する場合は、この説明の通りにやると出来ました。(Pods経由が生成した.PlistをFileUtils.cp_rでSetting.bundle下の.plistと置き換える方法)

(2016年10月17日追記: この点、CocoaPods1.0.0以降ではパスが少し変わっていて、No such file or directory @ rb_file_s_stat - Pods/Target Support Files/Pods/Pods-acknowledgements.plistのようなエラーが発生します。解決方法についてはCocoaPods1.1.0.rc.3でpod updateして遭遇したエラーと解決方法をご覧ください。)

ただ、このままですと、Podsを使わずに手作業で導入したOSSのライセンス表記や、その他の貢献者への感謝の言葉などを挿入したいときに困りました。

謝辞の冒頭のほうで、Special thanks to ** とか、手作業で入れたOSSのCopyright 2016- ** のような文を入れつつ、その下にPodsが生成したランセンス表記を入れたいです。

そこで調べてみると、公式の方法がありましたので、その工程についてメモを残したいと思います。

Podfileで文字列を指定する

任意の文字列を挟む方法は、公式に用意されていました。
https://github.com/CocoaPods/CocoaPods/wiki/Acknowledgements

例えば、全体の冒頭に文字列“Special thanks to **”を挿入したい場合、Podfileの中で次のように指定します。

class ::Pod::Generator::Acknowledgements
  def header_text
    “Special thanks to **”
  end
end

次に、pod install(あるいはpod update)します。

これだけです。

これで、
1. Acknowledgements
2. Special thanks to **
3. (以下、Pods経由のOSSのランセンス表記が続く)
という構造の.Plistを自動生成できるようになります。

ちょっとした不満

上のような並びになるのですが、どうも1と2の間に改行がかなり入ってしまい、間延びした形になってしまいます。この点は何か解決方法がないものか模索中です。

“(ダブルクォーテーション)について

細かい点ですが、一度ひっかかったのでメモとして。

PodfileはRubyの文法で書くので、文字列の中に“(ダブルクォーテーション)などの特殊な文字が含まれる場合、そこを特殊文字で書き換える必要があります。
例えば、こういう、そのままコピペする文言の中でダブルクォーテーションが使われているときがあります。

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

この場合は、" " → \” \”と置換すれば大丈夫です。

ですので、上の文章は以下のようになります。

 "(省略)  (the \"Software\"), to deal in (省略)"

Bundle.settingのiOS9.3のバグ

もう一つ気になった点をメモします。
iOS9のバグのために、Settings.bundleとRoot.plistを更新してしまうと、独自の設定項目が何も表示されなくなります。

こちらの記事に詳しいのてですが、執筆時最新版のiOS9.3.1においても、同じ現象が起きます。

iOS9 で、アプリ独自の設定(Settings.bundle)ができない場合への対応
http://qiita.com/nkawa/items/fc5a5e002724cb0c489a

この場合、一度、設定アプリを終了させてから設定アプリを再度開くと直ります。iOS9のバグが早く直るとよいですね。

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
12