Пример #1
0
 /**
  * @return array list of invalid $assoc_args keys to unset
  */
 private function validate_args($args, $assoc_args, $extra_args)
 {
     $synopsis = $this->get_synopsis();
     if (!$synopsis) {
         return array();
     }
     $validator = new Terminus\SynopsisValidator($synopsis);
     $cmd_path = implode(' ', get_path($this));
     foreach ($validator->get_unknown() as $token) {
         Terminus::log('warning', "The `{cmd}` command has an invalid synopsis part: {token}", array('cmd' => $cmd_path, 'token' => $token));
     }
     if (!$validator->enough_positionals($args)) {
         $this->show_usage();
         exit(1);
     }
     if ($this->name != 'help') {
         $invalid = $validator->invalid_positionals($args);
         if ($invalid) {
             throw new TerminusException("Invalid positional value: {invalid}", array('invalid' => $invalid));
         }
     }
     $unknown_positionals = $validator->unknown_positionals($args);
     if (!empty($unknown_positionals)) {
         throw new TerminusException('Too many positional arguments: {args}', array('args' => implode(' ', $unknown_positionals)));
     }
     list($errors, $to_unset) = $validator->validate_assoc(array_merge(Terminus::get_config(), $extra_args, $assoc_args));
     foreach ($validator->unknown_assoc($assoc_args) as $key) {
         $errors['fatal'][] = "unknown --{$key} parameter";
     }
     if (!empty($errors['fatal'])) {
         $out = 'Parameter errors:';
         foreach ($errors['fatal'] as $error) {
             $out .= "\n " . $error;
         }
         throw new TerminusException($out);
     }
     foreach ($errors['warning'] as $warning) {
         Terminus::log('warning', $warning);
     }
     return $to_unset;
 }
Пример #2
0
 /**
  * Decides which arguments are invalid for this command
  *
  * @param array $args       Array of command line non-params and non-flags
  * @param array $assoc_args Array of command line params and flags
  * @return array A list of invalid $assoc_args keys to unset
  * @throws TerminusException
  */
 private function validateArgs($args, $assoc_args)
 {
     $synopsis = $this->getSynopsis();
     if (!$synopsis) {
         return array();
     }
     $validator = new SynopsisValidator($synopsis);
     $cmd_path = implode(' ', getPath($this));
     foreach ($validator->getUnknown() as $token) {
         $this->logger->warning('The `{cmd}` command has an invalid synopsis part: {token}', array('cmd' => $cmd_path, 'token' => $token));
     }
     if (!$validator->enoughPositionals($args)) {
         throw new TerminusException($this->getUsage());
         exit(1);
     }
     if ($this->name != 'help') {
         $invalid = $validator->invalidPositionals($args);
         if ($invalid) {
             throw new TerminusException('Invalid positional value: {invalid}', compact('invalid'), 1);
         }
     }
     $unknownPositionals = $validator->unknownPositionals($args);
     if (!empty($unknownPositionals)) {
         throw new TerminusException('Too many positional arguments: {args}', ['args' => implode(' ', $unknownPositionals)], 1);
     }
     list($errors, $to_unset) = $validator->validateAssoc(array_merge($this->config, $assoc_args));
     foreach ($validator->unknownAssoc($assoc_args) as $key) {
         $errors['fatal'][] = "unknown --{$key} parameter";
     }
     if (!empty($errors['fatal'])) {
         $out = 'Parameter errors:';
         foreach ($errors['fatal'] as $error) {
             $out .= "\n " . $error;
         }
         throw new TerminusException($out, [], 1);
     }
     foreach ($errors['warning'] as $warning) {
         $this->logger->warning($warning);
     }
     return $to_unset;
 }