*/
function getCommands()
{
- return array('list-installed');
+ return array('list-installed', 'shell-test');
}
function getHelp($command)
$failmsg = '';
$cf = &PEAR_Config::singleton();
switch ($command) {
+ // {{{ list-installed
+
case 'list-installed': {
$reg = new PEAR_Registry($cf->get('php_dir'));
$installed = $reg->packageInfo();
'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', 'Version', 'State'),
+ array('bold' => true));
}
$this->ui->tableRow(array($package['package'],
$package['version'],
- $package['release_state']));
+ @$package['release_state']));
}
$this->ui->endTable();
break;
}
+
+ // }}}
+ 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;
+ }
default: {
return false;
}