/**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $module = $input->getArgument('module');
     $latest = $input->getOption('latest');
     $composer = $input->getOption('composer');
     $this->site->loadLegacyFile('/core/includes/bootstrap.inc');
     // check module's requirements
     $this->moduleRequirement($module);
     if ($composer) {
         foreach ($module as $moduleItem) {
             $command = sprintf('composer show drupal/%s ', $moduleItem);
             $processBuilder = new ProcessBuilder([]);
             $processBuilder->setWorkingDirectory($this->appRoot);
             $processBuilder->setArguments(explode(" ", $command));
             $process = $processBuilder->getProcess();
             $process->setTty('true');
             $process->run();
             if ($process->isSuccessful()) {
                 $io->info(sprintf('Module %s was downloaded with Composer.', $moduleItem));
             } else {
                 $io->error(sprintf('Module %s seems not to be installed with Composer. Halting.', $moduleItem));
                 throw new \RuntimeException($process->getErrorOutput());
                 return 0;
             }
         }
         $unInstalledModules = $module;
     } else {
         $resultList = $this->downloadModules($io, $module, $latest);
         $invalidModules = $resultList['invalid'];
         $unInstalledModules = $resultList['uninstalled'];
         if ($invalidModules) {
             foreach ($invalidModules as $invalidModule) {
                 unset($module[array_search($invalidModule, $module)]);
                 $io->error(sprintf('Invalid module name: %s', $invalidModule));
             }
         }
         if (!$unInstalledModules) {
             $io->warning($this->trans('commands.module.install.messages.nothing'));
             return 0;
         }
     }
     try {
         $io->comment(sprintf($this->trans('commands.module.install.messages.installing'), implode(', ', $unInstalledModules)));
         drupal_static_reset('system_rebuild_module_data');
         $this->moduleInstaller->install($unInstalledModules, true);
         $io->success(sprintf($this->trans('commands.module.install.messages.success'), implode(', ', $unInstalledModules)));
     } catch (\Exception $e) {
         $io->error($e->getMessage());
         return 1;
     }
     $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'all']);
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $module = $input->getArgument('module');
     $unInstalledDependencies = $this->calculateDependencies((array) $module);
     if (!$unInstalledDependencies) {
         $io->warning($this->trans('commands.module.install.dependencies.messages.no-depencies'));
         return 0;
     }
     try {
         $io->comment(sprintf($this->trans('commands.module.install.dependencies.messages.installing'), implode(', ', $unInstalledDependencies)));
         drupal_static_reset('system_rebuild_module_data');
         $this->moduleInstaller->install($unInstalledDependencies, true);
         $io->success(sprintf($this->trans('commands.module.install.dependencies.messages.success'), implode(', ', $unInstalledDependencies)));
     } catch (\Exception $e) {
         $io->error($e->getMessage());
         return 1;
     }
     $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'all']);
 }