]> granicus.if.org Git - php/commitdiff
implemented "uninstall" command
authorTomas V.V.Cox <cox@php.net>
Thu, 15 Nov 2001 01:24:35 +0000 (01:24 +0000)
committerTomas V.V.Cox <cox@php.net>
Thu, 15 Nov 2001 01:24:35 +0000 (01:24 +0000)
pear/PEAR/Installer.php
pear/scripts/pear.in

index dcfe5c8affd460112fdd05b36aab0568da31c03b..194acce80415c5732a538c779118317aea6eae8e 100644 (file)
@@ -240,6 +240,29 @@ class PEAR_Installer extends PEAR_Common
     }
 
     // }}}
+
+    function uninstall($package)
+    {
+        if (empty($this->registry)) {
+            $this->registry = new PEAR_Registry;
+        }
+        if (!$this->registry->packageExists($package)) {
+            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");
+            }
+        }
+        $this->registry->deletePackage($package);
+        return true;
+    }
 }
 
 ?>
\ No newline at end of file
index 2784a4ed9a3994767ca027aace65a4f07b80298b..d80e9aad20d3e85c41ea9e094b5bd6cbc7256b89 100644 (file)
@@ -84,7 +84,7 @@ foreach ($opts as $opt) {
 $config = new PEAR_Config($pear_user_config, $pear_default_config);
 $store_user_config = false;
 $store_default_config = false;
-$verbose = 0;
+$verbose = 1;
 
 foreach ($opts as $opt) {
     $param = $opt[1];
@@ -185,6 +185,19 @@ switch ($command) {
         break;
     }
 
+    // }}}
+    // {{{ uninstall
+    case 'uninstall': {
+        include_once 'PEAR/Installer.php';
+        $pkgfile = $options[1][2];
+        $installer =& new PEAR_Installer($script_dir, $ext_dir, $doc_dir);
+        $installer->setErrorHandling(PEAR_ERROR_DIE,
+                                     basename($pkgfile) . ": %s\n");
+        $installer->debug = $verbose;
+        $installer->uninstall($pkgfile);
+        print "uninstall ok\n";
+        break;
+    }
     // }}}
     // {{{ package
 
@@ -315,6 +328,7 @@ function usage($error = null)
           "     -h, -?     display help/usage (this message)\n".
           "Commands:\n".
           "   install <package file>\n".
+          "   uninstall <package name>\n".
           "   package [package info file]\n".
           "   list-installed\n".
           "   list-available\n".