[OpenPNE3]管理画面付きプラグイン(opFreepagePlugin)#6 プラグインのパッケージング

前回まででopFreepagePluginの開発部分は完了しました。今回はプラグインのバージョン情報を定義し、アーカイブ化することで、外部に公開できるファイルにしたいと思います。なお、このプラグインのパッケージング方法はOpenPNE 3.0.0で確認しているものです。近いうちにプラグインリリース用symfony拡張コマンドを充実させる予定もあるようですので、その点は加味してご覧ください。

プラグインのパッケージングは非常に簡単です。まずはプラグイン情報が書かれたpackage.xmlを作成します。これもコマンド1つで作成できます。今回はopFreepagePluginをバージョン0.9.0、ステータスをbeta、リリース文を”First release”とします。以下のようなコマンドになります。

  1. ./symfony opPlugin:define opFreepagePlugin 0.9.0 beta "First release"

以下のような出力がなされます。

  1. [uechooc@localhost pneroot]$ ./symfony opPlugin:define opFreepagePlugin 0.9.0 beta "First release"
  2. >> sfPearFrontendPlugin Attempting to discover channel "plugins.openpne.jp"...
  3. >> sfPearFrontendPlugin downloading channel.xml ...
  4. >> sfPearFrontendPlugin Starting to download channel.xml (598 bytes)
  5. >> sfPearFrontendPlugin .
  6. >> sfPearFrontendPlugin ...done: 598 bytes
  7. >> sfPearFrontendPlugin Auto-discovered channel "plugins.openpne.jp", alias
  8. >> sfPearFrontendPlugin "plugins.openpne.jp", adding to registry
  9. >> sfPearFrontendPlugin Attempting to discover channel "pear.symfony-project.com"...
  10. >> sfPearFrontendPlugin downloading channel.xml ...
  11. >> sfPearFrontendPlugin Starting to download channel.xml (663 bytes)
  12. >> sfPearFrontendPlugin ...done: 663 bytes
  13. >> sfPearFrontendPlugin Auto-discovered channel "pear.symfony-project.com", alias
  14. >> sfPearFrontendPlugin "symfony", adding to registry
  15. >> sfPearFrontendPlugin Attempting to discover channel
  16. >> sfPearFrontendPlugin "plugins.symfony-project.org"...
  17. >> sfPearFrontendPlugin downloading channel.xml ...
  18. >> sfPearFrontendPlugin Starting to download channel.xml (639 bytes)
  19. >> sfPearFrontendPlugin ...done: 639 bytes
  20. >> sfPearFrontendPlugin Auto-discovered channel "plugins.symfony-project.org", alias
  21. >> sfPearFrontendPlugin "symfony-plugins", adding to registry
  22. >> sfPearFrontendPlugin Analyzing
  23. >> sfPearFrontendPlugin apps/mobile_frontend/modules/freepage/actions/actions.class.php
  24. >> sfPearFrontendPlugin Analyzing
  25. >> sfPearFrontendPlugin apps/mobile_frontend/modules/freepage/templates/indexSuccess.php
  26. >> sfPearFrontendPlugin Analyzing
  27. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/actions/actions.class.php
  28. >> sfPearFrontendPlugin Analyzing
  29. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/editSuccess.php
  30. >> sfPearFrontendPlugin Analyzing
  31. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/indexSuccess.php
  32. >> sfPearFrontendPlugin Analyzing
  33. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/listSuccess.php
  34. >> sfPearFrontendPlugin Analyzing
  35. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/newSuccess.php
  36. >> sfPearFrontendPlugin Analyzing
  37. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/_form.php
  38. >> sfPearFrontendPlugin Analyzing
  39. >> sfPearFrontendPlugin apps/pc_backend/modules/opFreepagePlugin/templates/_submenu.php
  40. >> sfPearFrontendPlugin Analyzing
  41. >> sfPearFrontendPlugin apps/pc_frontend/modules/freepage/actions/actions.class.php
  42. >> sfPearFrontendPlugin Analyzing
  43. >> sfPearFrontendPlugin apps/pc_frontend/modules/freepage/templates/indexSuccess.php
  44. >> sfPearFrontendPlugin Analyzing config/config.php
  45. >> sfPearFrontendPlugin Analyzing lib/opFreepagePluginRouting.class.php
  46. >> sfPearFrontendPlugin Analyzing lib/filter/FreepageFormFilter.class.php
  47. >> sfPearFrontendPlugin Analyzing lib/filter/base/BaseFreepageFormFilter.class.php
  48. >> sfPearFrontendPlugin Analyzing lib/form/FreepageForm.class.php
  49. >> sfPearFrontendPlugin Analyzing lib/form/base/BaseFreepageForm.class.php
  50. >> sfPearFrontendPlugin Analyzing lib/model/Freepage.php
  51. >> sfPearFrontendPlugin Analyzing lib/model/FreepagePeer.php
  52. >> sfPearFrontendPlugin Analyzing lib/model/map/FreepageMapBuilder.php
  53. >> sfPearFrontendPlugin Analyzing lib/model/om/BaseFreepage.php
  54. >> sfPearFrontendPlugin Analyzing lib/model/om/BaseFreepagePeer.php

いろいろなファイルを解析していますが、これらはパッケージ内に含まれるファイル一覧を作成し、それぞれのファイルのチェックサムを取得している処理です。package.xmlには様々な設定項目があるのですが、コマンドラインで指定できる項目以外は固定で挿入されてしまいます。例えば、ライセンスはApache Licenseで固定されています。

パッケージ情報が生成できたので、アーカイブを作成します。これもコマンド一発です。以下のコマンドはopFreepagePluginのアーカイブををカレントディレクトリに作成します。

  1. ./symfony opPlugin:archive opFreepagePlugin ./

このコマンドを実行後、カレントディレクトリにはopFreepagePlugin-0.9.0.tgzというファイルが作成されています。バージョン名が付加されたtgzファイルですね。あとはこのファイルを公開すれば完成です。PEARのチャンネルサーバがあればコマンドラインからのインストールにも対応できると思うのでいいですね。plugins.openpne.jpなんかが一般開放されるとうれしいのですが。

以上でこの連載シリーズは終了です。OpnePNE3のプラグインが増えるといいですね!技術的な知識がある運営者ならばプラグインで独自の機能を作って自分のSNSを盛り上げることも可能でしょう。OpenSocialとsymfonyプラグインの双方で拡張できるOpenPNE3の可能性は無限大です!

About: uechoco