require_once 'PEAR/Registry.php';
require_once 'PEAR/Dependency.php';
-// TODO:
-// * files that are not installed should be removed from the
-// registered file list.
-
/**
* Administration class used to install PEAR packages and maintain the
* installed package database.
// Copy files to dest dir ---------------------------------------
// info from the package it self we want to access from _installFile
- $this->pkginfo = $pkginfo;
+ $this->pkginfo = &$pkginfo;
if (empty($options['register-only'])) {
if (!is_dir($this->config->get('php_dir'))) {
return $this->raiseError("no script destination directory\n",
foreach ($pkginfo['filelist'] as $file => $atts) {
$res = $this->_installFile($file, $atts, $tmp_path);
- if (!$res && empty($options['force'])) {
- return null;
+ if (!$res) {
+ // If file can't be installed and 'force' is not set, abort
+ if (empty($options['force'])) {
+ return null;
+ }
+ // Do not register not installed files
+ unset($pkginfo['filelist'][$file]);
}
}
}
if (!empty($options['force']) && $this->registry->packageExists($pkgname)) {
$this->registry->deletePackage($pkgname);
}
- $ret = $this->registry->addPackage($pkgname, $this->pkginfo);
+ $ret = $this->registry->addPackage($pkgname, $pkginfo);
} else {
- $ret = $this->registry->updatePackage($pkgname, $this->pkginfo, false);
+ $ret = $this->registry->updatePackage($pkgname, $pkginfo, false);
}
if (!$ret) {
return null;