From 1a82ecad910dce377909ea1428b4ba34038469d0 Mon Sep 17 00:00:00 2001 From: SofHad Date: Fri, 30 Jan 2015 10:13:54 +0100 Subject: [PATCH] Refactor the loop + add private method isInteractive --- src/Composer/Command/UpdateCommand.php | 39 +++++++++++++++----------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/Composer/Command/UpdateCommand.php b/src/Composer/Command/UpdateCommand.php index 95c1fa0be..2234ed4cf 100644 --- a/src/Composer/Command/UpdateCommand.php +++ b/src/Composer/Command/UpdateCommand.php @@ -79,17 +79,20 @@ EOT protected function execute(InputInterface $input, OutputInterface $output) { - $composer = $this->getComposer(true, $input->getOption('no-plugins')); - $packages = $input->getArgument('packages'); - if ($input->getOption('interactive')) { - $packages = $this->getPackagesInteractively($input, $output, $composer, $packages); - } - if ($input->getOption('no-custom-installers')) { $output->writeln('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); $input->setOption('no-plugins', true); } + $composer = $this->getComposer(true, $input->getOption('no-plugins')); + + $packages = $input->getArgument('packages'); + + if ($this->isInteractive($input)) { + $packages = $this->getPackagesInteractively($input, $output, $composer, $packages); + } + + $composer->getDownloadManager()->setOutputProgress(!$input->getOption('no-progress')); $io = $this->getIO(); $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'update', $input, $output); @@ -177,22 +180,21 @@ EOT $packages = is_array($packages) ? $packages : array(); $output->writeln('NB: Empty package ends submission.'); // I couldn't find any better for now! - $continue = true; do { $question->setAutocompleterValues($autocompleterValues); $addedPackage = $helper->ask($input, $output, $question); - if (is_string($addedPackage)) { - if (!in_array($addedPackage, $packages)) { - $packages[] = $addedPackage; - $autocompleterValues = array_diff($autocompleterValues, array($addedPackage)); - } else { - $output->writeln(sprintf('The package "%s" was already added.', $package)); - } + if (!is_string($addedPackage)) { + break; + } + + if (!in_array($addedPackage, $packages)) { + $packages[] = $addedPackage; + $autocompleterValues = array_diff($autocompleterValues, array($addedPackage)); } else { - $continue = false; + $output->writeln(sprintf('The package "%s" was already added.', $package)); } - } while ($continue); + } while (true); $packages = array_filter($packages); if (!$packages) { @@ -220,4 +222,9 @@ EOT throw new \RuntimeException('Installation aborted.'); } + + private function isInteractive($input) + { + return $input->getOption('interactive'); + } }