From bc7c93ae85ae524cee94b6dbb627eb156141515f Mon Sep 17 00:00:00 2001 From: Sandy Pleyte Date: Mon, 24 Feb 2014 13:34:50 +0100 Subject: [PATCH 1/4] Fix for #1966, use the preferred-install from the rootPackage config to install the dependencies. --- src/Composer/Command/CreateProjectCommand.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Composer/Command/CreateProjectCommand.php b/src/Composer/Command/CreateProjectCommand.php index 5aab270ce..1b28f0e28 100644 --- a/src/Composer/Command/CreateProjectCommand.php +++ b/src/Composer/Command/CreateProjectCommand.php @@ -161,6 +161,24 @@ EOT $composer->getEventDispatcher()->dispatchCommandEvent(ScriptEvents::POST_ROOT_PACKAGE_INSTALL, $installDevPackages); } + // Update preferSource / preferDist with preferred-install from the root package if both vars still + // have their default initial value (false) + $config = $composer->getConfig(); + if ($config->has('preferred-install') && $preferDist === false && $preferSource === false) { + switch ($config->get('preferred-install')) { + case 'source': + $preferSource = true; + break; + case 'dist': + $preferDist = true; + break; + case 'auto': + default: + // noop + break; + } + } + // install dependencies of the created project if ($noInstall === false) { $installer = Installer::create($io, $composer); From 9af5eaa57461a7a6b886edaa847af36202e626f5 Mon Sep 17 00:00:00 2001 From: Sandy Pleyte Date: Mon, 24 Feb 2014 15:27:41 +0100 Subject: [PATCH 2/4] Refactored the code with the switch statement. --- src/Composer/Command/CreateProjectCommand.php | 59 ++++++++++--------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/src/Composer/Command/CreateProjectCommand.php b/src/Composer/Command/CreateProjectCommand.php index 1b28f0e28..bfdddf31e 100644 --- a/src/Composer/Command/CreateProjectCommand.php +++ b/src/Composer/Command/CreateProjectCommand.php @@ -102,18 +102,8 @@ EOT $preferSource = false; $preferDist = false; - switch ($config->get('preferred-install')) { - case 'source': - $preferSource = true; - break; - case 'dist': - $preferDist = true; - break; - case 'auto': - default: - // noop - break; - } + $this->updatePreferredOptions($config, $preferSource, $preferDist); + if ($input->getOption('prefer-source') || $input->getOption('prefer-dist')) { $preferSource = $input->getOption('prefer-source'); $preferDist = $input->getOption('prefer-dist'); @@ -143,7 +133,7 @@ EOT ); } - public function installProject(IOInterface $io, $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false, $noInstall = false) + public function installProject(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false, $noInstall = false) { $oldCwd = getcwd(); @@ -163,20 +153,9 @@ EOT // Update preferSource / preferDist with preferred-install from the root package if both vars still // have their default initial value (false) - $config = $composer->getConfig(); - if ($config->has('preferred-install') && $preferDist === false && $preferSource === false) { - switch ($config->get('preferred-install')) { - case 'source': - $preferSource = true; - break; - case 'dist': - $preferDist = true; - break; - case 'auto': - default: - // noop - break; - } + $rootPackageConfig = $composer->getConfig(); + if ($rootPackageConfig->has('preferred-install') && $preferDist === false && $preferSource === false) { + $this->updatePreferredOptions($rootPackageConfig, $preferSource, $preferDist); } // install dependencies of the created project @@ -256,7 +235,7 @@ EOT return 0; } - protected function installRootPackage(IOInterface $io, $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false) + protected function installRootPackage(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false) { if (null === $repositoryUrl) { $sourceRepo = new CompositeRepository(Factory::createDefaultRepositories($io, $config)); @@ -361,4 +340,28 @@ EOT { return new InstallationManager(); } + + + /** + * Updated preferSource or preferDist based on the preferredInstall config option + * @param Config $config + * @param boolean $preferSource + * @param boolean $preferDist + */ + protected function updatePreferredOptions(Config $config, &$preferSource, &$preferDist) + { + switch ($config->get('preferred-install')) { + case 'source': + $preferSource = true; + break; + case 'dist': + $preferDist = true; + break; + case 'auto': + default: + // noop + break; + } + + } } From ab8f67e8cf75dee3c784660d7467d797492bb021 Mon Sep 17 00:00:00 2001 From: Sandy Pleyte Date: Mon, 24 Feb 2014 16:20:10 +0100 Subject: [PATCH 3/4] Always use rootPackage config --- src/Composer/Command/CreateProjectCommand.php | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Composer/Command/CreateProjectCommand.php b/src/Composer/Command/CreateProjectCommand.php index bfdddf31e..8022fb5c3 100644 --- a/src/Composer/Command/CreateProjectCommand.php +++ b/src/Composer/Command/CreateProjectCommand.php @@ -102,12 +102,7 @@ EOT $preferSource = false; $preferDist = false; - $this->updatePreferredOptions($config, $preferSource, $preferDist); - - if ($input->getOption('prefer-source') || $input->getOption('prefer-dist')) { - $preferSource = $input->getOption('prefer-source'); - $preferDist = $input->getOption('prefer-dist'); - } + $this->updatePreferredOptions($config, $input, $preferSource, $preferDist); if ($input->getOption('no-custom-installers')) { $output->writeln('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); @@ -129,11 +124,12 @@ EOT $input->getOption('no-scripts'), $input->getOption('keep-vcs'), $input->getOption('no-progress'), - $input->getOption('no-install') + $input->getOption('no-install'), + $input ); } - public function installProject(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false, $noInstall = false) + public function installProject(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false, $noInstall = false, InputInterface $input) { $oldCwd = getcwd(); @@ -154,9 +150,7 @@ EOT // Update preferSource / preferDist with preferred-install from the root package if both vars still // have their default initial value (false) $rootPackageConfig = $composer->getConfig(); - if ($rootPackageConfig->has('preferred-install') && $preferDist === false && $preferSource === false) { - $this->updatePreferredOptions($rootPackageConfig, $preferSource, $preferDist); - } + $this->updatePreferredOptions($rootPackageConfig, $input, $preferSource, $preferDist); // install dependencies of the created project if ($noInstall === false) { @@ -345,16 +339,19 @@ EOT /** * Updated preferSource or preferDist based on the preferredInstall config option * @param Config $config + * @param InputInterface $input * @param boolean $preferSource * @param boolean $preferDist */ - protected function updatePreferredOptions(Config $config, &$preferSource, &$preferDist) + protected function updatePreferredOptions(Config $config, InputInterface $input, &$preferSource, &$preferDist) { switch ($config->get('preferred-install')) { case 'source': $preferSource = true; + $preferDist = false; break; case 'dist': + $preferSource = false; $preferDist = true; break; case 'auto': @@ -363,5 +360,9 @@ EOT break; } + if ($input->getOption('prefer-source') || $input->getOption('prefer-dist')) { + $preferSource = $input->getOption('prefer-source'); + $preferDist = $input->getOption('prefer-dist'); + } } } From ee62ec60f0aa6f42aaac3587f46e2baf5046a036 Mon Sep 17 00:00:00 2001 From: Sandy Pleyte Date: Mon, 24 Feb 2014 16:22:44 +0100 Subject: [PATCH 4/4] Remove old comment --- src/Composer/Command/CreateProjectCommand.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Composer/Command/CreateProjectCommand.php b/src/Composer/Command/CreateProjectCommand.php index 8022fb5c3..87369dcaf 100644 --- a/src/Composer/Command/CreateProjectCommand.php +++ b/src/Composer/Command/CreateProjectCommand.php @@ -147,8 +147,6 @@ EOT $composer->getEventDispatcher()->dispatchCommandEvent(ScriptEvents::POST_ROOT_PACKAGE_INSTALL, $installDevPackages); } - // Update preferSource / preferDist with preferred-install from the root package if both vars still - // have their default initial value (false) $rootPackageConfig = $composer->getConfig(); $this->updatePreferredOptions($rootPackageConfig, $input, $preferSource, $preferDist);