PEAR_PackageFileManager_Cli で pear パッケージを作る

タイトルで全部なんですけど。

pear コマンドで管理可能なパッケージを作るためには

  • package(2).xml ファイルを作成して
  • pear package package(2).xml と入力

するとパッケージができるんだけど、この package(2).xml を作成するのが面倒らしく、いろいろフロントエンドがあるらしい。そんな中 PEAR_PackageProjector -lAiki に期待していたんだけど、試したら依存している CodeSniffer が PHP5 じゃないと動かないので使えないことが判明。(まぁその辺はイロイロあるでしょうがとりあえず無視。)

改めて調べると PEAR :: Package :: PEAR_PackageFileManager_Cli なんてのがあり、Pyrus - A few PEAR compatible packages を見ると順番に質問に答えるだけでよさそう。

2007-09-01 現在、0.3.0 alpha なのでインストール時は

pear install PEAR_PackageFileManager_Cli-alpha

としておく。

実際試した(OSX 10.3.9 PPC + PHP 4.4.4)ところ

  • pfm コマンドが作成されたので、パッケージを作成したいファイル群のてっぺんのディレクトリで pfm を起動
  • 順番に質問に答えていくだけ。ライセンスとかパッケージ名やバージョン以外は適当にデフォルトで進んじゃってオーケー
  • CVS とか .svn は自動的に避けて package.xml を作成してくれるので working copy 上で無造作に作業可能

など結構親切な印象。ちなみに聞かれる内容は pfm 0.3.0 で以下の通り

 1. Package name
 2. Channel/URI
 3. Summary
 4. Description
 5. Maintainers
 6. Version
 7. Stability
 8. License
 9. Notes
10. Dependencies
11. Tasks
12. Regenerate contents
13. Echo package file to stdout
14. Save & Quit
15. Quit without saving          (ctrl-c)

package名がモジュールの prefix になっていないと警告が出るなど、pear package としての作法を教えてくれるので、その辺を直しながら package としての体裁を整えていけばいいのかな。

課題

  • package2.xml を作る方法が分からない
    • package.xml という名前だけど中身は version 2 なので気にしなくていいかも
  • PHP_CompatInfo を使って利用できるバージョンを正確なものにしたかったが、CLI で動かしてみたらなんかエラーで動かなかった。なんだろ。
  • channel サーバもあった方がいいかなぁ
    • URL を直接指定させる方式なら channel サーバ要らないのかな
    • でも channel サーバあれば update とかのチェックしやすいよね

[追記] PHP_CompatInfo の問題は単に依存しているライブラリが足りないだけだった。これしかしなんでこんな table 形式で出力するんだ? 他のテキストツールで加工しにくいじゃん。

cf.

More