Re: Re: New pear command
| From: | Xavier Noguer | Date: | Fri, 25 Apr 2003 14:39:54 +0000 |
| Subject: | Re: Re: New pear command | ||
| References: | 1 2 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-15520@lists.php.net to get a copy of this message | ||
+1
El Vie 25 Abr 2003 06:12, Davey escribió:
> 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?
++1
> - 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
> > {
> > // {{{ properties
> >
> > var $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;
> > }
> >
> > // }}}
> > }