]> granicus.if.org Git - php/commitdiff
* added "register_only" option for install/uninstall
authorStig Bakken <ssb@php.net>
Tue, 11 Dec 2001 08:39:01 +0000 (08:39 +0000)
committerStig Bakken <ssb@php.net>
Tue, 11 Dec 2001 08:39:01 +0000 (08:39 +0000)
pear/PEAR/Installer.php

index 43ca15bd896d3d5a1abd39ff467e4eb8682f97e2..efa2793c88975692949ac3bdf069355ffa455a2e 100644 (file)
@@ -129,7 +129,7 @@ class PEAR_Installer extends PEAR_Common
      * @return bool true if successful, false if not
      */
 
-    function install($pkgfile)
+    function install($pkgfile, $options = array())
     {
         // XXX FIXME Add here code to manage packages database
         //$this->loadPackageList("$this->statedir/packages.lst");
@@ -217,23 +217,27 @@ class PEAR_Installer extends PEAR_Common
         }
 
         // Copy files to dest dir ---------------------------------------
-        if (!is_dir($this->phpdir)) {
-            chdir($oldcwd);
-            return $this->raiseError("no script destination directory found",
-                                     null, PEAR_ERROR_DIE);
-        }
-        $tmp_path = dirname($descfile);
-        foreach ($pkginfo['filelist'] as $fname => $atts) {
-            $dest_dir = $this->phpdir . DIRECTORY_SEPARATOR;
-            if (isset($atts['baseinstalldir'])) {
-                $dest_dir .= $atts['baseinstalldir'] . DIRECTORY_SEPARATOR;
+        if (empty($options['register_only'])) {
+            if (!is_dir($this->phpdir)) {
+                chdir($oldcwd);
+                return $this->raiseError("no script destination directory\n",
+                                         null, PEAR_ERROR_DIE);
             }
-            if (dirname($fname) != '.') {
-                $dest_dir .= dirname($fname) . DIRECTORY_SEPARATOR;
+            $tmp_path = dirname($descfile);
+            foreach ($pkginfo['filelist'] as $fname => $atts) {
+                $dest_dir = $this->phpdir . DIRECTORY_SEPARATOR;
+                if (isset($atts['baseinstalldir'])) {
+                    $dest_dir .= $atts['baseinstalldir'] . DIRECTORY_SEPARATOR;
+                }
+                if (dirname($fname) != '.') {
+                    $dest_dir .= dirname($fname) . DIRECTORY_SEPARATOR;
+                }
+                $fname = $tmp_path . DIRECTORY_SEPARATOR . $fname;
+                $this->_installFile($fname, $dest_dir, $atts);
             }
-            $fname = $tmp_path . DIRECTORY_SEPARATOR . $fname;
-            $this->_installFile($fname, $dest_dir, $atts);
-        }
+        }            
+
+        // Register that the package is installed -----------------------
         $this->registry->addPackage($pkginfo['package'], $pkginfo);
         chdir($oldcwd);
         return true;
@@ -251,16 +255,19 @@ class PEAR_Installer extends PEAR_Common
             return $this->raiseError("is not installed");
         }
         $info = $this->registry->packageInfo($package);
-        foreach ($info['filelist'] as $file => $props) {
-            $base = (isset($props['baseinstalldir'])) ? $props['baseinstalldir'] : '';
-            $path = PEAR_INSTALL_DIR . DIRECTORY_SEPARATOR . $base .
-                    DIRECTORY_SEPARATOR . $file;
-            if (!@unlink($path)) {
-                $this->log(2, "unable to delete: $path");
-            } else {
-                $this->log(2, "+ deleted file: $path");
+        if (empty($options['register_only'])) {
+            foreach ($info['filelist'] as $file => $props) {
+                $base = (isset($props['baseinstalldir'])) ? $props['baseinstalldir'] : '';
+                $path = PEAR_INSTALL_DIR . DIRECTORY_SEPARATOR . $base .
+                     DIRECTORY_SEPARATOR . $file;
+                if (!@unlink($path)) {
+                    $this->log(2, "unable to delete: $path");
+                } else {
+                    $this->log(2, "+ deleted file: $path");
+                }
             }
         }
+        // Register that the package is no longer installed -------------
         $this->registry->deletePackage($package);
         return true;
     }