public function run(InputInterface $input, OutputInterface $output) { // extract real command name $tokens = preg_split('{\\s+}', $input->__toString()); $args = array(); foreach ($tokens as $token) { if ($token && $token[0] !== '-') { $args[] = $token; if (count($args) >= 2) { break; } } } // show help for this command if no command was found if (count($args) < 2) { return parent::run($input, $output); } // change to global dir $config = Factory::createConfig(); chdir($config->get('home')); $this->getIO()->writeError('<info>Changed current directory to ' . $config->get('home') . '</info>'); // create new input without "global" command prefix $input = new StringInput(preg_replace('{\\bg(?:l(?:o(?:b(?:a(?:l)?)?)?)?)?\\b}', '', $input->__toString(), 1)); $this->getApplication()->resetComposer(); return $this->getApplication()->run($input, $output); }
/** * Execute the command and throw exceptions on errors. * * @param BaseCommand $command The command to execute. * * @param InputInterface $input The input to use. * * @param OutputInterface $output The output to use. * * @return void * * @throws \RuntimeException On exceptions or when the command has an non zero exit code. */ protected function executeCommand(BaseCommand $command, InputInterface $input, OutputInterface $output) { try { if (0 !== ($statusCode = $command->run($input, $output))) { throw new \RuntimeException('Error: command exit code was ' . $statusCode); } } catch (\Exception $exception) { throw new \RuntimeException($exception->getMessage(), $exception->getCode(), $exception); } }