[ Index ]
 

Code source de SPIP Agora 1.4

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/Pear/PEAR/Command/ -> Common.php (source)

   1  <?php
   2  //
   3  // +----------------------------------------------------------------------+
   4  // | PHP Version 5                                                        |
   5  // +----------------------------------------------------------------------+
   6  // | Copyright (c) 1997-2004 The PHP Group                                |
   7  // +----------------------------------------------------------------------+
   8  // | This source file is subject to version 3.0 of the PHP license,       |
   9  // | that is bundled with this package in the file LICENSE, and is        |
  10  // | available through the world-wide-web at the following url:           |
  11  // | http://www.php.net/license/3_0.txt.                                  |
  12  // | If you did not receive a copy of the PHP license and are unable to   |
  13  // | obtain it through the world-wide-web, please send a note to          |
  14  // | license@php.net so we can mail you a copy immediately.               |
  15  // +----------------------------------------------------------------------+
  16  // | Author: Stig Sæther Bakken <ssb@php.net>                             |
  17  // +----------------------------------------------------------------------+
  18  //
  19  // $Id: Common.php,v 1.24 2004/01/08 17:33:13 sniper Exp $
  20  
  21  require_once "PEAR.php";
  22  
  23  class PEAR_Command_Common extends PEAR
  24  {
  25      // {{{ properties
  26  
  27      /**
  28       * PEAR_Config object used to pass user system and configuration
  29       * on when executing commands
  30       *
  31       * @var object
  32       */
  33      var $config;
  34  
  35      /**
  36       * User Interface object, for all interaction with the user.
  37       * @var object
  38       */
  39      var $ui;
  40  
  41      var $_deps_rel_trans = array(
  42                                   'lt' => '<',
  43                                   'le' => '<=',
  44                                   'eq' => '=',
  45                                   'ne' => '!=',
  46                                   'gt' => '>',
  47                                   'ge' => '>=',
  48                                   'has' => '=='
  49                                   );
  50  
  51      var $_deps_type_trans = array(
  52                                    'pkg' => 'package',
  53                                    'extension' => 'extension',
  54                                    'php' => 'PHP',
  55                                    'prog' => 'external program',
  56                                    'ldlib' => 'external library for linking',
  57                                    'rtlib' => 'external runtime library',
  58                                    'os' => 'operating system',
  59                                    'websrv' => 'web server',
  60                                    'sapi' => 'SAPI backend'
  61                                    );
  62  
  63      // }}}
  64      // {{{ constructor
  65  
  66      /**
  67       * PEAR_Command_Common constructor.
  68       *
  69       * @access public
  70       */
  71      function PEAR_Command_Common(&$ui, &$config)
  72      {
  73          parent::PEAR();
  74          $this->config = &$config;
  75          $this->ui = &$ui;
  76      }
  77  
  78      // }}}
  79  
  80      // {{{ getCommands()
  81  
  82      /**
  83       * Return a list of all the commands defined by this class.
  84       * @return array list of commands
  85       * @access public
  86       */
  87      function getCommands()
  88      {
  89          $ret = array();
  90          foreach (array_keys($this->commands) as $command) {
  91              $ret[$command] = $this->commands[$command]['summary'];
  92          }
  93          return $ret;
  94      }
  95  
  96      // }}}
  97      // {{{ getShortcuts()
  98  
  99      /**
 100       * Return a list of all the command shortcuts defined by this class.
 101       * @return array shortcut => command
 102       * @access public
 103       */
 104      function getShortcuts()
 105      {
 106          $ret = array();
 107          foreach (array_keys($this->commands) as $command) {
 108              if (isset($this->commands[$command]['shortcut'])) {
 109                  $ret[$this->commands[$command]['shortcut']] = $command;
 110              }
 111          }
 112          return $ret;
 113      }
 114  
 115      // }}}
 116      // {{{ getOptions()
 117  
 118      function getOptions($command)
 119      {
 120          return @$this->commands[$command]['options'];
 121      }
 122  
 123      // }}}
 124      // {{{ getGetoptArgs()
 125  
 126      function getGetoptArgs($command, &$short_args, &$long_args)
 127      {
 128          $short_args = "";
 129          $long_args = array();
 130          if (empty($this->commands[$command])) {
 131              return;
 132          }
 133          reset($this->commands[$command]);
 134          while (list($option, $info) = each($this->commands[$command]['options'])) {
 135              $larg = $sarg = '';
 136              if (isset($info['arg'])) {
 137                  if ($info['arg']{0} == '(') {
 138                      $larg = '==';
 139                      $sarg = '::';
 140                      $arg = substr($info['arg'], 1, -1);
 141                  } else {
 142                      $larg = '=';
 143                      $sarg = ':';
 144                      $arg = $info['arg'];
 145                  }
 146              }
 147              if (isset($info['shortopt'])) {
 148                  $short_args .= $info['shortopt'] . $sarg;
 149              }
 150              $long_args[] = $option . $larg;
 151          }
 152      }
 153  
 154      // }}}
 155      // {{{ getHelp()
 156      /**
 157      * Returns the help message for the given command
 158      *
 159      * @param string $command The command
 160      * @return mixed A fail string if the command does not have help or
 161      *               a two elements array containing [0]=>help string,
 162      *               [1]=> help string for the accepted cmd args
 163      */
 164      function getHelp($command)
 165      {
 166          $config = &PEAR_Config::singleton();
 167          $help = @$this->commands[$command]['doc'];
 168          if (empty($help)) {
 169              // XXX (cox) Fallback to summary if there is no doc (show both?)
 170              if (!$help = @$this->commands[$command]['summary']) {
 171                  return "No help for command \"$command\"";
 172              }
 173          }
 174          if (preg_match_all('/{config\s+([^\}]+)}/e', $help, $matches)) {
 175              foreach($matches[0] as $k => $v) {
 176                  $help = preg_replace("/$v/", $config->get($matches[1][$k]), $help);
 177              }
 178          }
 179          return array($help, $this->getHelpArgs($command));
 180      }
 181  
 182      // }}}
 183      // {{{ getHelpArgs()
 184      /**
 185      * Returns the help for the accepted arguments of a command
 186      *
 187      * @param  string $command
 188      * @return string The help string
 189      */
 190      function getHelpArgs($command)
 191      {
 192          if (isset($this->commands[$command]['options']) &&
 193              count($this->commands[$command]['options']))
 194          {
 195              $help = "Options:\n";
 196              foreach ($this->commands[$command]['options'] as $k => $v) {
 197                  if (isset($v['arg'])) {
 198                      if ($v['arg']{0} == '(') {
 199                          $arg = substr($v['arg'], 1, -1);
 200                          $sapp = " [$arg]";
 201                          $lapp = "[=$arg]";
 202                      } else {
 203                          $sapp = " $v[arg]";
 204                          $lapp = "=$v[arg]";
 205                      }
 206                  } else {
 207                      $sapp = $lapp = "";
 208                  }
 209                  if (isset($v['shortopt'])) {
 210                      $s = $v['shortopt'];
 211                      @$help .= "  -$s$sapp, --$k$lapp\n";
 212                  } else {
 213                      @$help .= "  --$k$lapp\n";
 214                  }
 215                  $p = "        ";
 216                  $doc = rtrim(str_replace("\n", "\n$p", $v['doc']));
 217                  $help .= "        $doc\n";
 218              }
 219              return $help;
 220          }
 221          return null;
 222      }
 223  
 224      // }}}
 225      // {{{ run()
 226  
 227      function run($command, $options, $params)
 228      {
 229          $func = @$this->commands[$command]['function'];
 230          if (empty($func)) {
 231              // look for shortcuts
 232              foreach (array_keys($this->commands) as $cmd) {
 233                  if (@$this->commands[$cmd]['shortcut'] == $command) {
 234                      $command = $cmd;
 235                      $func = @$this->commands[$command]['function'];
 236                      if (empty($func)) {
 237                          return $this->raiseError("unknown command `$command'");
 238                      }
 239                      break;
 240                  }
 241              }
 242          }
 243          return $this->$func($command, $options, $params);
 244      }
 245  
 246      // }}}
 247  }
 248  
 249  ?>


Généré le : Sat Feb 24 14:40:03 2007 par Balluche grâce à PHPXref 0.7