예제 #1
0
 /**
  * Validates the argument instance.
  *
  * @return void
  * @throws PEAR2\Console\CommandLine_Exception
  * @todo use exceptions
  */
 public function validate()
 {
     // check if the argument name is valid
     if (!preg_match('/^[a-zA-Z_\\x7f-\\xff]+[a-zA-Z0-9_\\x7f-\\xff]*$/', $this->name)) {
         \PEAR2\Console\CommandLine::triggerError('argument_bad_name', E_USER_ERROR, array('{$name}' => $this->name));
     }
     if (!$this->optional && $this->default !== null) {
         Console_CommandLine::triggerError('argument_no_default', E_USER_ERROR);
     }
     parent::validate();
 }
예제 #2
0
 /**
  * Validates the xml definition using Relax NG.
  *
  * @param DomDocument $doc The document to validate
  *
  * @return boolean Whether the xml data is valid or not.
  * @throws PEAR2\Console\CommandLine\Exception
  * @todo use exceptions only
  */
 public static function validate($doc)
 {
     $rngfile = __DIR__ . '/../../../../data/pear2.php.net/PEAR2_Console_CommandLine/xmlschema.rng';
     if (!is_file($rngfile)) {
         $rngfile = __DIR__ . '/../../../../data/xmlschema.rng';
     }
     if (!is_readable($rngfile)) {
         CommandLine::triggerError('invalid_xml_file', E_USER_ERROR, array('{$file}' => $rngfile));
     }
     return $doc->relaxNGValidate($rngfile);
 }
예제 #3
0
 /**
  * Validates the option instance.
  *
  * @return void
  * @throws PEAR2\Console\CommandLine_Exception
  * @todo use exceptions instead
  */
 public function validate()
 {
     // check if the option name is valid
     if (!preg_match('/^[a-zA-Z_\x7f-\xff]+[a-zA-Z0-9_\x7f-\xff]*$/',
         $this->name)) {
         Console\CommandLine::triggerError('option_bad_name',
             E_USER_ERROR, array('{$name}' => $this->name));
     }
     // call the parent validate method
     parent::validate();
     // a short_name or a long_name must be provided
     if ($this->short_name == null && $this->long_name == null) {
         Console\CommandLine::triggerError('option_long_and_short_name_missing',
             E_USER_ERROR, array('{$name}' => $this->name));
     }
     // check if the option short_name is valid
     if ($this->short_name != null && 
         !(preg_match('/^\-[a-zA-Z]{1}$/', $this->short_name))) {
         Console\CommandLine::triggerError('option_bad_short_name',
             E_USER_ERROR, array(
                 '{$name}' => $this->name, 
                 '{$short_name}' => $this->short_name
             ));
     }
     // check if the option long_name is valid
     if ($this->long_name != null && 
         !preg_match('/^\-\-[a-zA-Z]+[a-zA-Z0-9_\-]*$/', $this->long_name)) {
         Console\CommandLine::triggerError('option_bad_long_name',
             E_USER_ERROR, array(
                 '{$name}' => $this->name, 
                 '{$long_name}' => $this->long_name
             ));
     }
     // check if we have a valid action
     if (!is_string($this->action)) {
         Console\CommandLine::triggerError('option_bad_action',
             E_USER_ERROR, array('{$name}' => $this->name));
     }
     if (!isset(Console\CommandLine::$actions[$this->action])) {
         Console\CommandLine::triggerError('option_unregistered_action',
             E_USER_ERROR, array(
                 '{$action}' => $this->action,
                 '{$name}' => $this->name
             ));
     }
     // if the action is a callback, check that we have a valid callback
     if ($this->action == 'Callback' && !is_callable($this->callback)) {
         Console\CommandLine::triggerError('option_invalid_callback',
             E_USER_ERROR, array('{$name}' => $this->name));
     }
 }
예제 #4
0
 /**
  * Validates the xml definition using Relax NG.
  *
  * @param DOMDocument $doc The document to validate
  *
  * @return boolean Whether the xml data is valid or not.
  * @throws PEAR2\Console\CommandLine\Exception
  *
  * @todo use exceptions only
  */
 public static function validate(DOMDocument $doc)
 {
     $paths = array();
     if (!class_exists('Phar', false) || !Phar::running()) {
         // Pyrus
         $paths[] = '@data_dir@/pear2.php.net/PEAR2_Console_CommandLine/xmlschema.rng';
         // PEAR
         $pearDataDirEnv = getenv('PHP_PEAR_DATA_DIR');
         if ($pearDataDirEnv) {
             $paths[] = $pearDataDirEnv . '/PEAR2_Console_CommandLine/xmlschema.rng';
         }
         $paths[] = '@data_dir@/PEAR2_Console_CommandLine/xmlschema.rng';
     }
     $pkgData = __DIR__ . '/../../../../data/';
     // PHAR dep
     $paths[] = $pkgData . 'pear2.php.net/PEAR2_Console_CommandLine/xmlschema.rng';
     $paths[] = $pkgData . 'PEAR2_Console_CommandLine/xmlschema.rng';
     $paths[] = $pkgData . 'pear2/console_commandline/xmlschema.rng';
     // Git/Composer
     $paths[] = $pkgData . 'xmlschema.rng';
     $paths[] = 'xmlschema.rng';
     foreach ($paths as $path) {
         if (is_readable($path)) {
             return $doc->relaxNGValidate($path);
         }
     }
     CommandLine::triggerError('invalid_xml_file', E_USER_ERROR, array('{$file}' => $path));
 }