PEAR_PackageFileManager クラスの概要

PEAR_PackageFileManager クラスの概要 --  PEAR :: PackageFileManager は、PEAR の package.xml ファイルの <filelist></filelist> セクションを更新して現在の状態を反映し、リリースの準備をする

PEAR :: PackageFileManager は、PEAR の package.xml ファイルの <filelist></filelist> セクションを更新して現在の状態を反映し、リリースの準備をします。

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() メソッドを使用することができます。

PEAR_PackageFileManager のクラス階層