PEAR_PackageFileManager クラスは、プラグインシステムを使用して パッケージ内のファイル一覧を生成します。これにより、標準的な ディレクトリの再帰パース (file 型のプラグイン) だけでなく より高度な仕組みが使用可能となります。例えば CVS ブラウザである PEAR_PackageFileManager_Cvs は、CVS からローカルにチェックアウトした ファイルの一覧を取得し、その際にローカルにある他のファイルは 無視します。
その他のオプションとしては、ファイルの拡張子に応じたロールの指定 (たとえば、拡張子 .php のファイルには role="php" を指定するなど)・ディレクトリへのロールの指定 ("tests" という名前のディレクトリには、デフォルトで role="tests" が指定されます)・例外などがあります。 例外とは、* や ? のワイルドカードを用いて指定したパス名で、 これらに対してはデフォルトロールではなく別のものを指定します。 たとえば、debug.tpl というテンプレートは通常は data となるでしょう。 ですが、これは docs ロールに含まれるべきです。 ファイルをパッケージから取り除くには、これらのオプションとともに ignore オプションを使用します。
リリースの際に必要となるオプションは version、baseinstalldir、 state および packagedirectory (package.xml の作成対象となる パッケージが存在する場所へのフルパス) です。
使用例:
1 <?php 2 require_once('PEAR/PackageFileManager.php'); 3 $packagexml = new PEAR_PackageFileManager; 4 $e = $packagexml->setOptions( 5 array('baseinstalldir' => 'PhpDocumentor', 6 'version' => '1.2.1', 7 'packagedirectory' => 'C:/Web Pages/chiara/phpdoc2/', 8 'state' => 'stable', 9 'filelistgenerator' => 'cvs', // cvs から作成します。ディレクトリから作成する場合は file を使用します。 10 'notes' => 'We\'ve implemented many new and exciting features', 11 'ignore' => array('TODO', 'tests/'), // TODO、そして tests/ 以下の全ファイルを無視します。 12 'installexceptions' => array('phpdoc' => '/*'), // baseinstalldir ="/" for phpdoc 13 'dir_roles' => array('tutorials' => 'doc'), 14 'exceptions' => array('README' => 'doc', // README は data になってしまいますが、これで doc となります。 15 'PHPLICENSE.txt' => 'doc'))); // ライセンスファイルについても同様です。 16 if (PEAR::isError($e)) { 17 echo $e->getMessage(); 18 die(); 19 } 20 $e = $test->addPlatformException('pear-phpdoc.bat', 'windows'); 21 if (PEAR::isError($e)) { 22 echo $e->getMessage(); 23 exit; 24 } 25 $packagexml->addRole('pkg', 'doc'); // 新しいロールのマッピングを追加します。 26 if (PEAR::isError($e)) { 27 echo $e->getMessage(); 28 exit; 29 } 30 // ファイル内の @PHP-BIN@ を PHP 実行ファイルへのパスに置き換えます! すばらしい。 31 $e = $test->addReplacement('pear-phpdoc', 'pear-config', '@PHP-BIN@', 'php_bin'); 32 if (PEAR::isError($e)) { 33 echo $e->getMessage(); 34 exit; 35 } 36 $e = $test->addReplacement('pear-phpdoc.bat', 'pear-config', '@PHP-BIN@', 'php_bin'); 37 if (PEAR::isError($e)) { 38 echo $e->getMessage(); 39 exit; 40 } 41 // debugPackageFile() を使用することに注意してください - 「非常に」重要です。 42 if (isset($_GET['make']) || $_SERVER['argv'][1] == 'make') { 43 $e = $packagexml->writePackageFile(); 44 } else { 45 $e = $packagexml->debugPackageFile(); 46 } 47 if (PEAR::isError($e)) { 48 echo $e->getMessage(); 49 die(); 50 } 51 ?> |
さらに、package.xml ファイルを 1 から手で作成することも可能です。 新しいオプションである package、summary、description や addMaintainer() メソッドを使用することができます。