]> granicus.if.org Git - php/commitdiff
introduce download-all command for the PEAR Installer
authorAlexander Merz <alexmerz@php.net>
Mon, 5 May 2003 07:07:51 +0000 (07:07 +0000)
committerAlexander Merz <alexmerz@php.net>
Mon, 5 May 2003 07:07:51 +0000 (07:07 +0000)
pear/PEAR/Command/Mirror.php [new file with mode: 0644]

diff --git a/pear/PEAR/Command/Mirror.php b/pear/PEAR/Command/Mirror.php
new file mode 100644 (file)
index 0000000..ed61f57
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+//
+// +----------------------------------------------------------------------+
+// | PHP Version 4                                                        |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2003 The PHP Group                                |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license,      |
+// | that is bundled with this package in the file LICENSE, and is        |
+// | available at through the world-wide-web at                           |
+// | http://www.php.net/license/2_02.txt.                                 |
+// | If you did not receive a copy of the PHP license and are unable to   |
+// | obtain it through the world-wide-web, please send a note to          |
+// | license@php.net so we can mail you a copy immediately.               |
+// +----------------------------------------------------------------------+
+// | Author: Alexander Merz <alexmerz@php.net>                            |
+// |                                                                      |
+// +----------------------------------------------------------------------+
+//
+// $Id$
+
+require_once "PEAR/Command/Common.php";
+require_once "PEAR/Command.php";
+require_once "PEAR/Remote.php";
+require_once "PEAR.php";
+
+/**
+ * PEAR commands for providing file mirrors
+ *
+ */
+class PEAR_Command_Mirror extends PEAR_Command_Common
+{
+    // {{{ properties
+
+    var $commands = array(
+        'download-all' => array(
+            'summary' => 'Downloads each avaible Package from master_server',
+            'function' => 'doDownloadAll',
+            'shortcut' => 'da',
+            'options' => array(),
+            'doc' => '
+           Request a list of avaible Packages from the Package-Server
+           (master_server) and downloads them to current working dir'
+            ),
+        );
+
+    // }}}
+
+    // {{{ constructor
+
+    /**
+     * PEAR_Command_Mirror constructor.
+     *
+     * @access public
+     * @param object PEAR_Frontend a reference to an frontend
+     * @param object PEAR_Config a reference to the configuration data
+     */
+    function PEAR_Command_Mirror(&$ui, &$config)
+    {
+        parent::PEAR_Command_Common($ui, $config);
+    }
+
+    // }}}
+
+    // {{{ doDownloadAll()
+    /**
+    * retrieves a list of avaible Packages from master server
+    * and downloads them
+    *
+    * @access public
+    * @param string $command the command
+    * @param array $options the command options before the command
+    * @param array $params the stuff after the command name
+    * @return bool true if succesful
+    * @throw PEAR_Error 
+    */
+    function doDownloadAll($command, $options, $params)
+    {
+       $this->config->set("php_dir", "."); 
+       $remote = &new PEAR_Remote($this->config);
+       $remoteInfo = $remote->call("package.listAll");
+       if(PEAR::isError($remoteInfo)) {
+               return $remoteInfo;
+       }
+       $cmd = &PEAR_Command::factory("download", $this->config);
+       if(PEAR::isError($cmd)) {
+               return $cmd;
+       }       
+       foreach($remoteInfo as $pkgn=>$pkg) {   
+               // error handling not neccesary, because
+               // already done by the download command
+               $cmd->run("download", array(), array($pkgn));       
+       } 
+
+        return true;
+    }
+
+    // }}}
+}