De PEAR_PackageGenerate class gebruikt een plugin om de bestands lijst van een pakket te genereren. Hiermee kan zowel standaard recursieve directory parsing (plugin type file) en meer intelligente opties zoals de CVS browser PEAR_PackageFileManager_Cvs, welke alle bestanden van een lokale CVS checkout to een list maakt, negerent alle andere lokale bestanden.
Andere opties zijn onderandere het specificeren van z.g.n. roles voor bestands extensies (alle .php bestanden zijn role="php", bijvoorbeeld), roles voor directories (alle directories genaamd "tests" worden role="tests" als default), en excepties. Excepties zijn specifieke padnamen met * en ? wildcards die bij een standaard role horen,maar zouden eigenlijk een andere moeten hebben. Bijvoorbeeld, mischien een debug.tpl template zou normaal data zijn, maar moet worden ge include als een doc role. Some met deze regels, om bestanden kompleet te negeren, gebruik de negeer optie.
Verplichte opties voor een release zijn version, baseinstalldir, state en packagedirectory (het volledige pad naar de lokale locatie van het pakket waar package.xml gemaakt moet worden)
Voorbeeld gebruik:
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', // generate from cvs, use file for directory
10 'notes' => 'We\'ve implemented many new and exciting features',
11 'ignore' => array('TODO', 'tests/'), // ignore TODO, all files in tests/
12 'installexceptions' => array('phpdoc' => '/*'), // baseinstalldir ="/" for phpdoc
13 'dir_roles' => array('tutorials' => 'doc'),
14 'exceptions' => array('README' => 'doc', // README would be data, now is doc
15 'PHPLICENSE.txt' => 'doc'))); // same for the license
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'); // add a new role mapping
26 if (PEAR::isError($e)) {
27 echo $e->getMessage();
28 exit;
29 }
30 // replace @PHP-BIN@ in this file with the path to php executable! pretty neat
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 // note use of - this is VERY important
42 if (isset($_GET['make']) || $_SERVER['argv'][2] == '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 ?>
52
53 In addition, a package.xml file can now be generated from
54 scratch, with the usage of new options package, summary, description, and
55 the use of the method
PEAR_PackageFileManager