From: Stig Bakken Date: Fri, 29 Mar 2002 02:41:28 +0000 (+0000) Subject: * implemented "pear list-upgrades", which will show you what releases X-Git-Tag: php-4.3.0dev-ZendEngine2-Preview1~976 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=69df28337bacf5943b465941c9c9f4a0f58b2b63;p=php * implemented "pear list-upgrades", which will show you what releases are available on the server (shows newer releases with the same state) --- diff --git a/pear/PEAR/Command/Remote.php b/pear/PEAR/Command/Remote.php new file mode 100644 index 0000000000..ecf2c3e91f --- /dev/null +++ b/pear/PEAR/Command/Remote.php @@ -0,0 +1,128 @@ + value + * + * @param array list of additional parameters + * + * @return bool TRUE on success, FALSE for unknown commands, or + * a PEAR error on failure + * + * @access public + */ + function run($command, $options, $params) + { + $failmsg = ''; + $remote = &new PEAR_Remote($this->config); + switch ($command) { + case 'remote-package-info': { + break; + } + case 'list-remote-packages': { + break; + } + case 'list-upgrades': { + include_once "PEAR/Registry.php"; + if (empty($params[0])) { + $state = $this->config->get('preferred_state'); + } else { + $state = $params[0]; + } + $caption = 'Available Upgrades'; + if (empty($state) || $state == 'any') { + $latest = $remote->call("package.listLatestReleases"); + } else { + $latest = $remote->call("package.listLatestReleases", $state); + $caption .= ' (' . $state . ')'; + } + $caption .= ':'; + if (PEAR::isError($latest)) { + return $latest; + } + $reg = new PEAR_Registry($this->config->get('php_dir')); + $inst = array_flip($reg->listPackages()); + $this->ui->startTable(array('caption' => $caption, + 'border' => 1)); + $this->ui->tableRow(array('Package', 'Version', 'Size'), + array('bold' => true)); + foreach ($latest as $package => $info) { + if (!isset($inst[$package])) { + // skip packages we don't have installed + continue; + } + extract($info); + $inst_version = $reg->packageInfo($package, 'version'); + if (version_compare($version, $inst_version, "le")) { + // installed version is up-to-date + continue; + } + if ($filesize >= 20480) { + $filesize += 1024 - ($filesize % 1024); + $fs = sprintf("%dkB", $filesize / 1024); + } elseif ($filesize > 0) { + $filesize += 103 - ($filesize % 103); + $fs = sprintf("%.1fkB", $filesize / 1024.0); + } else { + $fs = " -"; // XXX center instead + } + $this->ui->tableRow(array($package, $version, $fs)); + } + $this->ui->endTable(); + break; + } + default: { + return false; + } + } + if ($failmsg) { + return $this->raiseError($failmsg); + } + return true; + } + + // }}} + + +} + +?> \ No newline at end of file