install_file $install_files = array(); /* $dp = opendir($pear_dir); while ($ent = readdir($dp)) { if (ereg('^package-(.*)\.xml$', $ent, $matches)) { $install_files[$matches[1]] = $ent; } } closedir($dp); */ foreach ($argv as $arg) { $bn = basename($arg); if (ereg('^package-(.*)\.xml$', $bn, $matches) || ereg('^([A-Za-z0-9_:]+)-.*\.(tar|tgz)$', $bn, $matches)) { $install_files[$matches[1]] = $arg; } } $config = &PEAR_Config::singleton(); // make sure we use only default values $config_layers = $config->getLayers(); foreach ($config_layers as $layer) { if ($layer == 'default') continue; $config->removeLayer($layer); } $config->set('verbose', 0, 'default'); $reg = &new PEAR_Registry($config->get('php_dir')); $ui = &new PEAR_Frontend_CLI(); $installer = &new PEAR_Installer($ui); foreach ($install_files as $package => $instfile) { if ($reg->packageExists($package)) { $info = $installer->infoFromAny($instfile); if (PEAR::isError($info)) { $ui->displayLine(sprintf("[PEAR] %s: %s", $package, $info->getMessage())); continue; } $new_ver = $info['version']; $old_ver = $reg->packageInfo($package, 'version'); if (version_compare($new_ver, $old_ver, 'gt')) { $err = $installer->install($instfile, array('upgrade' => true)); if (PEAR::isError($err)) { $ui->displayLine(sprintf("[PEAR] %s: %s", $package, $err->getMessage())); continue; } $ui->displayLine(sprintf("[PEAR] %-15s- upgraded: %s", $package, $new_ver)); } else { if (@$argv[1] == '--force') { $err = $installer->install($instfile, array('force' => true)); if (PEAR::isError($err)) { $ui->displayLine(sprintf("[PEAR] %s: %s", $package, $err->getMessage())); continue; } $ui->displayLine(sprintf("[PEAR] %-15s- installed: %s", $package, $new_ver)); } else { $ui->displayLine(sprintf("[PEAR] %-15s- not installed (already have %s)", $package, $old_ver)); } } } else { $err = $installer->install($instfile); if (PEAR::isError($err)) { $ui->displayLine(sprintf("[PEAR] %s: %s", $package, $err->getMessage())); continue; } $new_ver = $reg->packageInfo($package, 'version'); $ui->displayLine(sprintf("[PEAR] %-15s- installed: %s", $package, $new_ver)); } } ?>