From b6ef95ecb846d0ef4c6e862dfddfe9d96434b413 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Sun, 20 Jul 2014 18:54:16 +0200 Subject: [PATCH] Add support for opening multiple packages at once, refs #2445 --- src/Composer/Command/HomeCommand.php | 38 ++++++++++++++++++---------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/Composer/Command/HomeCommand.php b/src/Composer/Command/HomeCommand.php index 1d3411a04..8bf68cac6 100644 --- a/src/Composer/Command/HomeCommand.php +++ b/src/Composer/Command/HomeCommand.php @@ -39,7 +39,7 @@ class HomeCommand extends Command ->setAliases(array('home')) ->setDescription('Opens the package\'s repository URL or homepage in your browser.') ->setDefinition(array( - new InputArgument('package', InputArgument::REQUIRED, 'Package to browse to.'), + new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'Package(s) to browse to.'), new InputOption('homepage', 'H', InputOption::VALUE_NONE, 'Open the homepage instead of the repository URL.'), )) ->setHelp(<<initializeRepo($input, $output); - $package = $this->getPackage($repo, $input->getArgument('package')); + $return = 0; - if (!$package instanceof CompletePackageInterface) { - throw new InvalidArgumentException('Package not found'); - } + foreach ($input->getArgument('packages') as $packageName) { + $package = $this->getPackage($repo, $packageName); - $support = $package->getSupport(); - $url = isset($support['source']) ? $support['source'] : $package->getSourceUrl(); - if (!$url || $input->getOption('home')) { - $url = $package->getHomepage(); - } + if (!$package instanceof CompletePackageInterface) { + $return = 1; + $output->writeln('Package '.$packageName.' not found'); + + continue; + } + + $support = $package->getSupport(); + $url = isset($support['source']) ? $support['source'] : $package->getSourceUrl(); + if (!$url || $input->getOption('homepage')) { + $url = $package->getHomepage(); + } + + if (!filter_var($url, FILTER_VALIDATE_URL)) { + $return = 1; + $output->writeln(''.($input->getOption('homepage') ? 'Invalid or missing homepage' : 'Invalid or missing repository URL').' for '.$packageName.''); + + continue; + } - if (!filter_var($url, FILTER_VALIDATE_URL)) { - throw new InvalidPackageException(array($package->getName() => $input->getOption('home') ? 'Invalid or missing homepage' : 'Invalid or missing repository URL')); + $this->openBrowser($url); } - $this->openBrowser($url); + return $return; } /**