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.