1
0
Fork 0

Merge remote-tracking branch 'jsor/install_update_flags'

pull/138/merge
Jordi Boggiano 2011-11-30 21:11:15 +01:00
commit 3ebfbd78ac
2 changed files with 26 additions and 2 deletions

View File

@ -18,6 +18,7 @@ use Composer\DependencyResolver\Pool;
use Composer\DependencyResolver\Request; use Composer\DependencyResolver\Request;
use Composer\DependencyResolver\Operation; use Composer\DependencyResolver\Operation;
use Composer\Package\LinkConstraint\VersionConstraint; use Composer\Package\LinkConstraint\VersionConstraint;
use Composer\Package\PackageInterface;
use Composer\Repository\PlatformRepository; use Composer\Repository\PlatformRepository;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputOption;
@ -38,6 +39,8 @@ class InstallCommand extends Command
->setDefinition(array( ->setDefinition(array(
new InputOption('dev', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), new InputOption('dev', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'),
new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'),
new InputOption('no-install-recommends', null, InputOption::VALUE_NONE, 'Do not install recommended packages (ignored when installing from an existing lock file).'),
new InputOption('install-suggests', null, InputOption::VALUE_NONE, 'Also install suggested packages (ignored when installing from an existing lock file).'),
)) ))
->setHelp(<<<EOT ->setHelp(<<<EOT
The <info>install</info> command reads the composer.json file from the The <info>install</info> command reads the composer.json file from the
@ -85,8 +88,9 @@ EOT
$output->writeln('> Updating dependencies.'); $output->writeln('> Updating dependencies.');
$listedPackages = array(); $listedPackages = array();
$installedPackages = $installedRepo->getPackages(); $installedPackages = $installedRepo->getPackages();
$links = $this->collectLinks($input, $composer->getPackage());
foreach ($composer->getPackage()->getRequires() as $link) { foreach ($links as $link) {
$listedPackages[] = $link->getTarget(); $listedPackages[] = $link->getTarget();
foreach ($installedPackages as $package) { foreach ($installedPackages as $package) {
@ -112,7 +116,10 @@ EOT
} }
} else { } else {
$output->writeln('> Installing dependencies.'); $output->writeln('> Installing dependencies.');
foreach ($composer->getPackage()->getRequires() as $link) {
$links = $this->collectLinks($input, $composer->getPackage());
foreach ($links as $link) {
$request->install($link->getTarget(), $link->getConstraint()); $request->install($link->getTarget(), $link->getConstraint());
} }
} }
@ -175,4 +182,19 @@ EOT
$output->writeln('> Done'); $output->writeln('> Done');
} }
private function collectLinks(InputInterface $input, PackageInterface $package)
{
$links = $package->getRequires();
if (!$input->getOption('no-install-recommends')) {
$links = array_merge($links, $package->getRecommends());
}
if ($input->getOption('install-suggests')) {
$links = array_merge($links, $package->getSuggests());
}
return $links;
}
} }

View File

@ -36,6 +36,8 @@ class UpdateCommand extends Command
->setDefinition(array( ->setDefinition(array(
new InputOption('dev', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), new InputOption('dev', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'),
new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'),
new InputOption('no-install-recommends', null, InputOption::VALUE_NONE, 'Do not install recommended packages.'),
new InputOption('install-suggests', null, InputOption::VALUE_NONE, 'Also install suggested packages.'),
)) ))
->setHelp(<<<EOT ->setHelp(<<<EOT
The <info>update</info> command reads the composer.json file from the The <info>update</info> command reads the composer.json file from the