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); }
/** * {@inheritDoc} */ public function execute(InputInterface $input, OutputInterface $output) { $config = new Config($this->getComposer()); $this->resetComposers($application = $this->getApplication()); /** @var ComposerApplication $application */ if ($config->binLinksAreEnabled()) { putenv('COMPOSER_BIN_DIR=' . $this->createConfig()->get('bin-dir')); } $vendorRoot = 'vendor-bin'; $namespace = $input->getArgument('namespace'); $input = new StringInput(preg_replace('/bin\\s+' . preg_quote($namespace, '/') . '/', '', $input->__toString(), 1)); return 'all' !== $namespace ? $this->executeInNamespace($application, $vendorRoot . '/' . $namespace, $input, $output) : $this->executeAllNamespaces($application, 'vendor-bin', $input, $output); }
public function run(InputInterface $input, OutputInterface $output) { $tokens = preg_split('{\\s+}', $input->__toString()); $args = array(); foreach ($tokens as $token) { if ($token && $token[0] !== '-') { $args[] = $token; if (count($args) >= 2) { break; } } } if (count($args) < 2) { return parent::run($input, $output); } $config = Factory::createConfig(); chdir($config->get('home')); $this->getIO()->writeError('<info>Changed current directory to ' . $config->get('home') . '</info>'); $input = new StringInput(preg_replace('{\\bg(?:l(?:o(?:b(?:a(?:l)?)?)?)?)?\\b}', '', $input->__toString(), 1)); return $this->getApplication()->run($input, $output); }