/** * Gets command to run * * @param array $words Words of the command-line string to process * @return array $command_array * [RootCommand] $command * [array] $args * [array] $assoc_args */ private function getCommand($words) { $positional_args = $assoc_args = array(); foreach ($words as $arg) { if (preg_match('|^--([^=]+)=?|', $arg, $matches)) { $assoc_args[$matches[1]] = true; } else { $positional_args[] = $arg; } } $runner = new Runner(); $command_components = $runner->findCommandToRun($positional_args); if (!is_array($command_components) && array_pop($command_components) == $this->cur_word) { $command_components = $runner->findCommandToRun($positional_args); } if (is_array($command_components)) { $command_components[] = $assoc_args; } return $command_components; }