[ Index ]
 

Code source de PHP PEAR 1.4.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/PEAR/ -> PackageFileManager.php (sommaire)

(pas de description)

Poids: 1595 lignes (73 kb)
Inclus ou requis: 3 fois
Référencé: 0 fois
Nécessite: 4 fichiers
 PEAR/PackageFileManager/XMLOutput.php
 PEAR/PackageFileManager/SimpleGenerator.php
 PEAR/Common.php
 PEAR/PackageFile.php

Définit 1 class

PEAR_PackageFileManager:: (30 méthodes):
  PEAR_PackageFileManager()
  setOptions()
  importOptions()
  getOptions()
  addRole()
  addPlatformException()
  addGlobalReplacement()
  addReplacement()
  addMaintainer()
  addConfigureOption()
  detectDependencies()
  isIncludeable()
  addDependency()
  writePackageFile()
  debugPackageFile()
  pushWarning()
  getWarnings()
  _getMessage()
  raiseError()
  _addProvides()
  _getFileList()
  _getSimpleDirTag()
  _getDirTag()
  _traverseFileArray()
  _getDependencies()
  _updateChangeLog()
  _changelogsort()
  _getExistingPackageXML()
  _generateNewPackageXML()
  file_get_contents()


Classe: PEAR_PackageFileManager  - X-Ref

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 {@link 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:
<code>
<?php
require_once('PEAR/PackageFileManager.php');
$packagexml = new PEAR_PackageFileManager;
$e = $packagexml->setOptions(
array('baseinstalldir' => 'PhpDocumentor',
'version' => '1.2.1',
'packagedirectory' => 'C:/Web Pages/chiara/phpdoc2/',
'state' => 'stable',
'filelistgenerator' => 'cvs', // generate from cvs, use file for directory
'notes' => 'We\'ve implemented many new and exciting features',
'ignore' => array('TODO', 'tests/'), // ignore TODO, all files in tests/
'installexceptions' => array('phpdoc' => '/*'), // baseinstalldir ="/" for phpdoc
'dir_roles' => array('tutorials' => 'doc'),
'exceptions' => array('README' => 'doc', // README would be data, now is doc
'PHPLICENSE.txt' => 'doc'))); // same for the license
if (PEAR::isError($e)) {
echo $e->getMessage();
die();
}
$e = $test->addPlatformException('pear-phpdoc.bat', 'windows');
if (PEAR::isError($e)) {
echo $e->getMessage();
exit;
}
$packagexml->addRole('pkg', 'doc'); // add a new role mapping
if (PEAR::isError($e)) {
echo $e->getMessage();
exit;
}
// replace @PHP-BIN@ in this file with the path to php executable!  pretty neat
$e = $test->addReplacement('pear-phpdoc', 'pear-config', '@PHP-BIN@', 'php_bin');
if (PEAR::isError($e)) {
echo $e->getMessage();
exit;
}
$e = $test->addReplacement('pear-phpdoc.bat', 'pear-config', '@PHP-BIN@', 'php_bin');
if (PEAR::isError($e)) {
echo $e->getMessage();
exit;
}
// note use of {@link debugPackageFile()} - this is VERY important
if (isset($_GET['make']) || (isset($_SERVER['argv'][2]) &&
$_SERVER['argv'][2] == 'make')) {
$e = $packagexml->writePackageFile();
} else {
$e = $packagexml->debugPackageFile();
}
if (PEAR::isError($e)) {
echo $e->getMessage();
die();
}
?>
</code>

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 {@link addMaintainer()} method
PEAR_PackageFileManager()   X-Ref
Does nothing, use setOptions

The constructor is not used in order to be able to
return a PEAR_Error from setOptions

setOptions($options = array()   X-Ref
Set package.xml generation options

The options array is indexed as follows:
<code>
$options = array('option_name' => <optionvalue>);
</code>

The documentation below simplifies this description through
the use of option_name without quotes

Configuration options:
- lang: lang controls the language in which error messages are
displayed.  There are currently only English error messages,
but any contributed will be added over time.<br>
Possible values: en (default)
- packagefile: the name of the packagefile, defaults to package.xml
- pathtopackagefile: the path to an existing package file to read in,
if different from the packagedirectory
- packagedirectory: the path to the base directory of the package.  For
package PEAR_PackageFileManager, this path is
/path/to/pearcvs/pear/PEAR_PackageFileManager where
/path/to/pearcvs is a local path on your hard drive
- outputdirectory: the path in which to place the generated package.xml
by default, this is ignored, and the package.xml is
created in the packagedirectory
- filelistgenerator: the <filelist> section plugin which will be used.
In this release, there are two generator plugins,
file and cvs.  For details, see the docs for these
plugins
- usergeneratordir: For advanced users.  If you write your own filelist
generator plugin, use this option to tell
PEAR_PackageFileManager where to find the file that
contains it.  If the plugin is named foo, the class
must be named PEAR_PackageFileManager_Foo
no matter where it is located.  By default, the Foo
plugin is located in PEAR/PackageFileManager/Foo.php.
If you pass /path/to/foo in this option, setOptions
will look for PEAR_PackageFileManager_Foo in
/path/to/foo/Foo.php
- doctype: Specifies the DTD of the package.xml file.  Default is
http://pear.php.net/dtd/package-1.0
- pearcommonclass: Specifies the name of the class to instantiate, default
is PEAR_Common, but users can override this with a custom
class that implements PEAR_Common's method interface
- changelogoldtonew: True if the ChangeLog should list from oldest entry to
newest.  Set to false if you would like new entries first
- simpleoutput: True if the package.xml should not contain md5sum or <provides />
for readability
- addhiddenfiles: True if you wish to add hidden files/directories that begin with .
like .bashrc.  This is only used by the File generator.  The CVS
generator will use all files in CVS regardless of format

package.xml simple options:
- baseinstalldir: The base directory to install this package in.  For
package PEAR_PackageFileManager, this is "PEAR", for
package PEAR, this is "/"
- license: The license this release is released under.  Default is
PHP License if left unspecified
- notes: Release notes, any text describing what makes this release unique
- changelognotes: notes for the changelog, this should be more detailed than
the release notes.  By default, PEAR_PackageFileManager uses
the notes option for the changelog as well
- version: The version number for this release.  Remember the convention for
numbering: initial alpha is between 0 and 1, add b<beta number> for
beta as in 1.0b1, the integer portion of the version should specify
backwards compatibility, as in 1.1 is backwards compatible with 1.0,
but 2.0 is not backwards compatible with 1.10.  Also note that 1.10
is a greater release version than 1.1 (think of it as "one point ten"
and "one point one").  Bugfix releases should be a third decimal as in
1.0.1, 1.0.2
- package: [optional] Package name.  Use this to create a new package.xml, or
overwrite an existing one from another package used as a template
- summary: [optional] Summary of package purpose
- description: [optional] Description of package purpose.  Note that the above
three options are not optional when creating a new package.xml
from scratch

<b>WARNING</b>: all complex options that require a file path are case-sensitive

package.xml complex options:
- cleardependencies: since version 1.3.0, this option will erase any existing
dependencies in the package.xml if set to true
- ignore: an array of filenames, directory names, or wildcard expressions specifying
files to exclude entirely from the package.xml.  Wildcards are operating system
wildcards * and ?.  file*foo.php will exclude filefoo.php, fileabrfoo.php and
filewho_is_thisfoo.php.  file?foo.php will exclude fileafoo.php and will not
exclude fileaafoo.php.  test/ will exclude all directories and subdirectories of
ANY directory named test encountered in directory parsing.  *test* will exclude
all files and directories that contain test in their name
- include: an array of filenames, directory names, or wildcard expressions specifying
files to include in the listing.  All other files will be ignored.
Wildcards are in the same format as ignore
- roles: this is an array mapping file extension to install role.  This
specifies default behavior that can be overridden by the exceptions
option and dir_roles option.  use {@link addRole()} to add a new
role to the pre-existing array
- dir_roles: this is an array mapping directory name to install role.  All
files in a directory whose name matches the directory will be
given the install role specified.  Single files can be excluded
from this using the exceptions option.  The directory should be
a relative path from the baseinstalldir, or "/" for the baseinstalldir
- exceptions: specify file role for specific files.  This array maps all files
matching the exact name of a file to a role as in "file.ext" => "role"
- deps: dependency array.  Pass in an empty array to clear all dependencies, and use
{@link addDependency()} to add new ones/replace existing ones
- maintainers: maintainers array.  Pass in an empty array to clear all maintainers, and
use {@link addMaintainer()} to add a new maintainer/replace existing maintainer
- installexceptions: array mapping of specific filenames to baseinstalldir values.  Use
this to force the installation of a file into another directory,
such as forcing a script to be in the root scripts directory so that
it will be in the path.  The filename must be a relative path to the
packagedirectory
- platformexceptions: array mapping of specific filenames to the platform they should be
installed on.  Use this to specify unix-only files or windows-only
files.  The format of the platform string must be
OS-version-cpu-extra if any more specific information is needed,
and the OS must be in lower case as in "windows."  The match is
performed using a regular expression, but uses * and ? wildcards
instead of .* and .?.  Note that hpux/aix/irix/linux are all
exclusive.  To select non-windows, use (*ix|*ux)
- scriptphaseexceptions: array mapping of scripts to their install phase.  This can be
one of: pre-install, post-install, pre-uninstall, post-uninstall,
pre-build, post-build, pre-setup, or post-setup
- installas: array mapping of specific filenames to the filename they should be installed as.
Use this to specify new filenames for files that should be installed.  This will
often be used in conjunction with platformexceptions if there are two files for
different OSes that must have the same name when installed.
- replacements: array mapping of specific filenames to complex text search-and-replace that
should be performed upon install.  The format is:
<pre>
filename => array('type' => php-const|pear-config|package-info
'from' => text in file
'to' => name of variable)
</pre>
if type is php-const, then 'to' must be the name of a PHP Constant.
If type is pear-config, then 'to' must be the name of a PEAR config
variable accessible through a PEAR_Config class->get() method.  If
type is package-info, then 'to' must be the name of a section from
the package.xml file used to install this file.
- globalreplacements: a list of replacements that should be performed on every single file.
The format is the same as replacements (since 1.4.0)
- configure_options: array specifies build options for PECL packages (you should probably
use PECL_Gen instead, but it's here for completeness)
param: array
return: void|PEAR_Error

importOptions($packagefile, $options = array()   X-Ref
Import options from an existing package.xml

return: true|PEAR_Error

getOptions()   X-Ref
Get the existing options

return: array

addRole($extension, $role)   X-Ref
Add an extension/role mapping to the role mapping option

Roles influence both where a file is installed and how it is installed.
Files with role="data" are in a completely different directory hierarchy
from the program files of role="php"

In PEAR 1.3b2, these roles are
- php (most common)
- data
- doc
- test
- script (gives the file an executable attribute)
- src
param: string file extension
param: string role

addPlatformException($path, $platform)   X-Ref
Add an install-time platform conditional install for a file

The format of the platform string must be
OS-version-cpu-extra if any more specific information is needed,
and the OS must be in lower case as in "windows."  The match is
performed using a regular expression, but uses * and ? wildcards
instead of .* and .?.  Note that hpux/aix/irix/linux are all
exclusive.  To select non-windows, use (*ix|*ux)

This information is based on eyeing the source for OS/Guess.php, so
if you are unsure of what to do, read that file.
param: string relative path of file (relative to packagedirectory option)
param: string platform descriptor string

addGlobalReplacement($type, $from, $to)   X-Ref
Add a replacement option for all files

This sets an install-time complex search-and-replace function
allowing the setting of platform-specific variables in all
installed files.

if $type is php-const, then $to must be the name of a PHP Constant.
If $type is pear-config, then $to must be the name of a PEAR config
variable accessible through a {@link PEAR_Config::get()} method.  If
type is package-info, then $to must be the name of a section from
the package.xml file used to install this file.
param: string relative path of file (relative to packagedirectory option)
param: string variable type, either php-const, pear-config or package-info
param: string text to replace in the source file
param: string variable name to use for replacement

addReplacement($path, $type, $from, $to)   X-Ref
Add a replacement option for a file

This sets an install-time complex search-and-replace function
allowing the setting of platform-specific variables in an
installed file.

if $type is php-const, then $to must be the name of a PHP Constant.
If $type is pear-config, then $to must be the name of a PEAR config
variable accessible through a {@link PEAR_Config::get()} method.  If
type is package-info, then $to must be the name of a section from
the package.xml file used to install this file.
param: string relative path of file (relative to packagedirectory option)
param: string variable type, either php-const, pear-config or package-info
param: string text to replace in the source file
param: string variable name to use for replacement

addMaintainer($handle, $role, $name, $email)   X-Ref
Add a maintainer to the list of maintainers.

Every maintainer must have a valid account at pear.php.net.  The
first parameter is the account name (for instance, cellog is the
handle for Greg Beaver at pear.php.net).  Every maintainer has
one of four possible roles:
- lead: the primary maintainer
- developer: an important developer on the project
- contributor: self-explanatory
- helper: ditto

Finally, specify the name and email of the maintainer
param: string username on pear.php.net of maintainer
param: lead|developer|contributor|helper role of maintainer
param: string full name of maintainer
param: string email address of maintainer

addConfigureOption($name, $prompt, $default = null)   X-Ref
Add an install-time configuration option for building of source

This option is only useful to PECL projects that are built upon
installation
param: string name of the option
param: string prompt to display to the user
param: string default value
return: void|PEAR_Error

detectDependencies()   X-Ref

return: void|PEAR_Error

isIncludeable($file)   X-Ref
Pas de description

addDependency($name, $version = false, $operator = 'ge', $type = 'pkg', $optional = false)   X-Ref
Add a dependency on another package, or an extension/php

This will overwrite an existing dependency if it is found.  In
other words, if a dependency on PHP 4.1.0 exists, and
addDependency('php', '4.3.0', 'ge', 'php') is called, the existing
dependency on PHP 4.1.0 will be overwritten with the new one on PHP 4.3.0
param: string Dependency element name
param: string Dependency version
param: string A specific operator for the version, this can be one of:
param: string Dependency type.  This can be one of:
param: boolean true if dependency is optional
return: void|PEAR_Error

writePackageFile($debuginterface = null)   X-Ref
Writes the package.xml file out with the newly created <release></release> tag

ALWAYS use {@link debugPackageFile} to verify that output is correct before
overwriting your package.xml
param: boolean null if no debugging, true if web interface, false if command-line
return: void|PEAR_Error

debugPackageFile()   X-Ref
ALWAYS use this to test output before overwriting your package.xml!!

This method instructs writePackageFile() to simply print the package.xml
to output, either command-line or web-friendly (this is automatic
based on the value of php_sapi_name())

pushWarning($code, $info)   X-Ref
Store a warning on the warning stack


getWarnings()   X-Ref
Retrieve the list of warnings

return: array

_getMessage($code, $info)   X-Ref
Retrieve an error message from a code

return: string Error message

raiseError($code, $i1 = '', $i2 = '')   X-Ref
Utility function to shorten error generation code

{@source}
return: PEAR_Error

_addProvides(&$pear, $file)   X-Ref
Uses {@link PEAR_Common::analyzeSourceCode()} and {@link PEAR_Common::buildProvidesArray()}
to create the <provides></provides> section of the package.xml

param: PEAR_Common
param: string path to source file

_getFileList()   X-Ref

return: string

_getSimpleDirTag($struc, $role = false, $_curdir = '')   X-Ref
Recursively generate the <filelist> section's <dir> and <file> tags, but with
simple human-readable output

param: array|PEAR_Error the sorted directory structure, or an error
param: false|string whether the parent directory has a role this should
param: integer indentation level
return: array|PEAR_Error

_getDirTag($struc, $role=false, $_curdir = '')   X-Ref
Recursively generate the <filelist> section's <dir> and <file> tags

param: array|PEAR_Error the sorted directory structure, or an error
param: false|string whether the parent directory has a role this should
param: integer indentation level
return: array|PEAR_Error

_traverseFileArray($files, &$ret)   X-Ref

param: array

_getDependencies()   X-Ref
Retrieve the 'deps' option passed to the constructor

return: array

_updateChangeLog()   X-Ref
Creates a changelog entry with the current release
notes and dates, or overwrites a previous creation


_changelogsort($a, $b)   X-Ref


_getExistingPackageXML($path, $packagefile = 'package.xml')   X-Ref

param: string full path to package file
param: string name of package file
return: true|PEAR_Error

_generateNewPackageXML()   X-Ref
Create the structure for a new package.xml

return: true|PEAR_Error

file_get_contents($path, $use_include_path = null, $context = null)   X-Ref




Généré le : Sun Feb 25 14:08:00 2007 par Balluche grâce à PHPXref 0.7