3 namespace Drupal\Console\Command\Shared;
5 use Drupal\Console\Core\Style\DrupalStyle;
10 * @package Drupal\Console\Command
15 * Ask the user to choose a module or profile.
17 * @param DrupalStyle $io
19 * @param bool $showProfile
20 * If profiles should be discovered.
23 * When no modules are found.
27 public function moduleQuestion(DrupalStyle $io, $showProfile = true)
29 $modules = $this->extensionManager->discoverModules()
36 $profiles = $this->extensionManager->discoverProfiles()
43 $modules = array_merge($modules, $profiles);
46 if (empty($modules)) {
47 throw new \Exception('No extension available, execute the proper generator command to generate one.');
50 $module = $io->choiceNoList(
51 $this->trans('commands.common.questions.module'),
59 * Verify that install requirements for a list of modules are met.
61 * @param string[] $module
62 * List of modules to verify.
63 * @param DrupalStyle $io
67 * When one or more requirements are not met.
69 public function moduleRequirement(array $module, DrupalStyle $io)
71 // TODO: Module dependencies should also be checked
72 // for unmet requirements recursively.
74 foreach ($module as $module_name) {
75 module_load_install($module_name);
76 if ($requirements = \Drupal::moduleHandler()->invoke($module_name, 'requirements', ['install'])) {
77 foreach ($requirements as $requirement) {
78 if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
79 $io->info("Module '{$module_name}' cannot be installed: " . $requirement['title'] . ' | ' . $requirement['value']);
86 throw new \Exception("Some module install requirements are not met.");