PEAR Manual
Prev |  | Next

# Class Summary PEAR_PackageFileManager

Class Summary PEAR_PackageFileManager -- PEAR :: PackageFileManager updates the <filelist></filelist> section of a PEAR package.xml file to reflect the current files in preparation for a release.

## PEAR :: PackageFileManager updates the <filelist></filelist> section of a PEAR package.xml file to reflect the current files in preparation for a release.

The PEAR_PackageFileManager class uses a plugin system to generate the list of files in a package. This allows both standard recursive directory parsing (plugin type file) and more intelligent options such as the CVS browser PEAR_PackageFileManager_Cvs, which grabs all files in a local CVS checkout to create the list, ignoring any other local files.

Other options include specifying roles for file extensions (all .php files are role="php", for example), roles for directories (all directories named "tests" are given role="tests" by default), and exceptions. Exceptions are specific pathnames with * and ? wildcards that match a default role, but should have another. For example, perhaps a debug.tpl template would normally be data, but should be included in the docs role. Along these lines, to exclude files entirely, use the ignore option.

Required options for a release include version, baseinstalldir, state, and packagedirectory (the full path to the local location of the package to create a package.xml file for)

Example usage:

    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 debugPackageFile() - this is VERY important
    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     ?>

In addition, a package.xml file can now be generated from scratch, with the usage of new options package, summary, description, and the use of the addMaintainer() method

## Class Trees for PEAR_PackageFileManager

- PEAR_PackageFileManager

Prev | Home | Next
PEAR_PackageFileManager | Up | constructor PEAR_PackageFileManager::PEAR_PackageFileManager()