class PEAR_Command_Registry extends PEAR_Command_Common
{
- // {{{ constructor
+ var $commands = array(
+ 'list-installed' => array(
+ 'summary' => 'List Installed Packages',
+ 'function' => 'doListInstalled',
+ 'options' => array(),
+ 'doc' => 'List the PEAR packages installed in your php_dir ({config php_dir)).
+',
+ ),
+ 'shell-test' => array(
+ 'summary' => 'Shell Script Test',
+ 'function' => 'doShellTest',
+ 'options' => array(),
+ 'doc' => 'Tests if a package is installed in the system. Will exit(1) if it is not.
+ <relation> The version comparison operator. One of:
+ <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne
+ <version> The version to compare with
+'),
+ );
/**
* PEAR_Command_Registry constructor.
parent::PEAR_Command_Common($ui, $config);
}
- // }}}
-
- // {{{ getCommands()
-
- /**
- * Return a list of all the commands defined by this class.
- * @return array list of commands
- * @access public
- */
- function getCommands()
- {
- return array('list-installed' => 'List Installed Packages',
- 'shell-test' => 'Shell Script Test');
- }
-
- function getHelp($command)
+ function doListInstalled($command, $options, $params)
{
- switch ($command) {
- case 'list-installed':
- return array(null, 'List the installed PEAR packages in the system');
- case 'shell-test':
- return array('<package name> [<relation>] [<version>]',
- "Tests if a package is installed in the system. Will exit(1) if it is not.\n".
- " <relation> The version comparison operator. One of:\n".
- " <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne\n".
- " <version> The version to compare with");
+ $reg = new PEAR_Registry($this->config->get('php_dir'));
+ $installed = $reg->packageInfo();
+ $i = $j = 0;
+ $this->ui->startTable(
+ array('caption' => 'Installed packages:',
+ 'border' => true));
+ foreach ($installed as $package) {
+ if ($i++ % 20 == 0) {
+ $this->ui->tableRow(
+ array('Package', 'Version', 'State'),
+ array('bold' => true));
+ }
+ $this->ui->tableRow(array($package['package'],
+ $package['version'],
+ @$package['release_state']));
}
+ if ($i == 0) {
+ $this->ui->tableRow(array('(no packages installed yet)'));
+ }
+ $this->ui->endTable();
+ return true;
}
- // }}}
- // {{{ run()
-
- /**
- * Execute the command.
- *
- * @param string command name
- *
- * @param array option_name => value
- *
- * @param array list of additional parameters
- *
- * @return bool TRUE on success, FALSE if the command was unknown,
- * or a PEAR error on failure
- *
- * @access public
- */
- function run($command, $options, $params)
- {
- $failmsg = '';
- $cf = &PEAR_Config::singleton();
- switch ($command) {
- // {{{ list-installed
-
- case 'list-installed': {
- $reg = new PEAR_Registry($cf->get('php_dir'));
- $installed = $reg->packageInfo();
- $i = $j = 0;
- $this->ui->startTable(
- array('caption' => 'Installed packages:',
- 'border' => true));
- foreach ($installed as $package) {
- if ($i++ % 20 == 0) {
- $this->ui->tableRow(
- array('Package', 'Version', 'State'),
- array('bold' => true));
- }
- $this->ui->tableRow(array($package['package'],
- $package['version'],
- @$package['release_state']));
- }
- if ($i == 0) {
- $this->ui->tableRow(array('(no packages installed yet)'));
- }
- $this->ui->endTable();
- break;
+ function doShellTest($command, $options, $params) {
+ $this->pushErrorHandling(PEAR_ERROR_RETURN);
+ $reg = &new PEAR_Registry($this->config->get('php_dir'));
+ // "pear shell-test Foo"
+ if (sizeof($params) == 1) {
+ if (!$reg->packageExists($params[0])) {
+ exit(1);
}
-
- // }}}
- case 'shell-test': {
- // silence error messages for the rest of the execution
- PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
- $reg = &new PEAR_Registry($this->config->get('php_dir'));
- // "pear shell-test Foo"
- if (sizeof($params) == 1) {
- if (!$reg->packageExists($params[0])) {
- exit(1);
- }
- // "pear shell-test Foo 1.0"
- } elseif (sizeof($params) == 2) {
- $v = $reg->packageInfo($params[0], 'version');
- if (!$v || !version_compare($v, $params[1], "ge")) {
- exit(1);
- }
- // "pear shell-test Foo ge 1.0"
- } elseif (sizeof($params) == 3) {
- $v = $reg->packageInfo($params[0], 'version');
- if (!$v || !version_compare($v, $params[2], $params[1])) {
- exit(1);
- }
- } else {
- PEAR::popErrorHandling();
- PEAR::raiseError("$command: expects 1 to 3 parameters");
- exit(1);
- }
- break;
+ // "pear shell-test Foo 1.0"
+ } elseif (sizeof($params) == 2) {
+ $v = $reg->packageInfo($params[0], 'version');
+ if (!$v || !version_compare($v, $params[1], "ge")) {
+ exit(1);
}
- default: {
- return false;
+ // "pear shell-test Foo ge 1.0"
+ } elseif (sizeof($params) == 3) {
+ $v = $reg->packageInfo($params[0], 'version');
+ if (!$v || !version_compare($v, $params[2], $params[1])) {
+ exit(1);
}
+ } else {
+ $this->popErrorHandling();
+ $this->raiseError("$command: expects 1 to 3 parameters");
+ exit(1);
}
- if ($failmsg) {
- return $this->raiseError($failmsg);
- }
- return true;
}
- // }}}
-
-
}
?>
\ No newline at end of file