Ejemplo n.º 1
0
 static function setUpDefinition(Command\Definition $definition, $options)
 {
     $options->run = Command\Option::create()->setIsUnnamed()->setIsRequired()->setDescription('Run name')->setType();
     $options->symbol = Command\Option::create()->setDescription('Function name')->setType();
     $options->isInclusive = Command\Option::create()->setDescription('Show inclusive stats');
     $options->limit = Option::create()->setType()->setDescription('Limit number of rows');
 }
Ejemplo n.º 2
0
 public function read(Request $request, array $options)
 {
     $this->def = new PrepareDefinition($options);
     $tokens = $request->server()->argv;
     for ($i = 0; $i < $this->skipFirstTokens; ++$i) {
         array_shift($tokens);
     }
     $this->scriptName = array_shift($tokens);
     $tokens = array_values($tokens);
     $argc = count($tokens);
     if ($argc === 1) {
         foreach (array(Runner::HELP, Runner::VERSION, Runner::BASH_COMPLETION, Runner::INSTALL) as $builtIn) {
             if ($tokens[0] === Runner::OPTION_NAME . $builtIn) {
                 $this->values[$builtIn] = true;
                 return $this;
             }
         }
     }
     $this->option = null;
     for ($index = 0; $index < $argc; ++$index) {
         $this->token = new StringValue($tokens[$index]);
         $this->processToken();
     }
     if ($this->variadicStarted) {
         $this->finishVariadic();
     }
     if (!empty($this->def->requiredArguments)) {
         foreach ($this->def->requiredArguments as $this->option) {
             throw new Exception('Missing required argument: ' . $this->option->getUsage(), Exception::ARGUMENT_REQUIRED);
         }
     }
     if (!empty($this->def->requiredOptions)) {
         foreach ($this->def->requiredOptions as $this->option) {
             throw new Exception('Option required: ' . $this->option->getUsage(), Exception::OPTION_REQUIRED);
         }
     }
     return $this;
 }
Ejemplo n.º 3
0
 public function __construct($options)
 {
     $this->optionsArray = $options;
     /** @var Option $hasVariadicArgument */
     $hasVariadicArgument = null;
     $this->optionsArray[Runner::HELP] = Option::create()->setDescription('Show usage information')->setGroup(Runner::GROUP_MISC)->setName(Runner::HELP);
     $this->optionsArray[Runner::VERSION] = Option::create()->setDescription('Show version')->setGroup(Runner::GROUP_MISC)->setName(Runner::VERSION);
     $this->optionsArray[Runner::BASH_COMPLETION] = Option::create()->setDescription('Generate bash completion')->setGroup(Runner::GROUP_MISC)->setName(Runner::BASH_COMPLETION);
     $this->optionsArray[Runner::INSTALL] = Option::create()->setDescription('Install to /usr/local/bin/')->setGroup(Runner::GROUP_MISC)->setName(Runner::INSTALL);
     foreach ($this->optionsArray as &$option) {
         $option = Option::cast($option);
         if ($option->isUnnamed) {
             if ($hasVariadicArgument) {
                 throw new Exception('Non-tailing variadic argument ' . $hasVariadicArgument->getUsage(), Exception::NON_TAILING_VARIADIC_ARGUMENT);
             }
             if ($option->isVariadic) {
                 $hasVariadicArgument = $option;
             }
             if ($option->isRequired) {
                 if (!empty($this->optionalArguments)) {
                     throw new Exception('Non-tailing optional argument', Exception::NON_TAILING_OPTIONAL_ARGUMENT);
                 }
                 $this->requiredArguments[] = $option;
             } else {
                 $this->optionalArguments[] = $option;
             }
             continue;
         }
         if ($option->isRequired) {
             $this->requiredOptions[$option->name] = $option;
         }
         if ($option->shortName) {
             $this->byShortName[$option->shortName] = $option;
         }
         $this->byName[$option->getPublicName()] = $option;
     }
 }
Ejemplo n.º 4
0
 static function setUpDefinition(Definition $definition, $options)
 {
     $options->path = Option::create()->setIsUnnamed()->setIsRequired()->setDescription('Path to profiles directory or file');
     $options->alias = Option::create()->setIsUnnamed()->setDescription('Run alias name');
     $options->project = Option::create()->setType()->setDescription('Project name');
     $options->tags = Option::create()->setIsVariadic()->setDescription('Tags for imported data');
     $options->allowDuplicates = Option::create()->setShortName('d')->setDescription('Allow duplicate profiles (by file path)');
     $options->noSquash = Option::create()->setDescription('Do not combine runs into one');
     $definition->name = 'xhprof-import';
     $definition->description = 'XHPROF data importing tool';
     $definition->version = 'v0.1';
 }