Re: New pear command
| From: | Davey | Date: | Fri, 25 Apr 2003 10:12:49 +0000 |
| Subject: | Re: New pear command | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-15511@lists.php.net to get a copy of this message | ||
Well, I'd welcome this... but can you imagine if PEAR get to any large size, the amount of packages being installed will be overwhelming.
I don't think theres any harm in this command, I could do with it myself, as a web-host it's a PITA having to install 1 by 1 just cause a hostee might want one.
Overall +1 - but you will need to add dependency checking and such rather than just installing them in alphabetical order, otherwise only half will be installed first time. You'd need to run it twice.
I'm looking to write a with-deps flag for install/upgrade soon, so that it'll find out and install all dependencies needed when trying to install the specified package, perhaps we could collaborate?
- Davey
Alexander Merz wrote:
I attached a class implementing a "download-all" command for the PEAR Package Manager. For testing copy the file to <php_dir>/PEAR/Command/ and call pear download-all It downloads all avaible Packages from the server into the current working directory. If enough +1, i will commit it to cvs. ------------------------------------------------------------------------ <?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: Build.php,v 1.5 2002/12/31 16:18:27 sebastian Exp $ 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 {// {{{ propertiesvar $commands = array( 'download-all' => array( 'summary' => 'Downloads avaible Releases from Package-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() /** * do the download * * @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; }// }}}}