$ret[1] = "{$ret[1]}\n" .
" -f forces the installation of the package\n".
" when it is already installed\n".
- " -n do not take care of package dependencies";
+ " -n do not take care of package dependencies\n".
+ " -s soft update: install or upgrade only if needed";
return $ret;
}
+ // }}}
+ // {{{ getOptions()
+
+ function getOptions()
+ {
+ return array('f', 'n', 's');
+ }
+
// }}}
// {{{ run()
$installer = &new PEAR_Installer($this->config->get('php_dir'),
$this->config->get('ext_dir'),
$this->config->get('doc_dir'));
+ $installer->setFrontend($this->ui);
$installer->debug = $this->config->get('verbose');
$failmsg = '';
if (isset($options['n'])) {
$opts['nodeps'] = true;
}
+ if (isset($options['s'])) {
+ $opts['soft'] = true;
+ }
switch ($command) {
case 'upgrade':
$opts['upgrade'] = true;
}
// }}}
-
- function getOptions()
- {
- return array('f', 'n');
- }
}
?>
\ No newline at end of file
// recognized options:
// - register_only : update registry but don't install files
// - upgrade : upgrade existing install
+ // - soft : fail silently
//
if (empty($this->registry)) {
$this->registry = new PEAR_Registry($this->phpdir);
} elseif (!@is_file($pkgfile)) {
if (preg_match('/^[A-Z][A-Za-z0-9_]+$/', $pkgfile)) {
// valid package name
+ if ($this->registry->packageExists($pkgfile)) {
+ return $this->raiseError("$pkgfile already installed");
+ }
if ($config === null) {
$pkgfile = "http://pear.php.net/get/$pkgfile";
} else {
if (isset($pkginfo['release_deps']) && !isset($options['nodeps'])) {
$error = $this->checkDeps($pkginfo);
if ($error) {
- $this->log(0, $error);
+ if (empty($options['soft'])) {
+ $this->log(0, $error);
+ }
return $this->raiseError('Dependencies failed');
}
}