/** * 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(); }
/** * 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); }
/** * 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)); } }
/** * 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)); }