5 * Contains \Drupal\Console\Command\Update\DebugCommand.
8 namespace Drupal\Console\Command\Update;
10 use Symfony\Component\Console\Input\InputInterface;
11 use Symfony\Component\Console\Output\OutputInterface;
12 use Symfony\Component\Console\Command\Command;
13 use Drupal\Core\Update\UpdateRegistry;
14 use Drupal\Console\Core\Command\Shared\CommandTrait;
15 use Drupal\Console\Utils\Site;
16 use Drupal\Console\Core\Style\DrupalStyle;
18 class DebugCommand extends Command
30 protected $postUpdateRegistry;
33 * DebugCommand constructor.
36 * @param UpdateRegistry $postUpdateRegistry
38 public function __construct(
40 UpdateRegistry $postUpdateRegistry
43 $this->postUpdateRegistry = $postUpdateRegistry;
44 parent::__construct();
50 protected function configure()
53 ->setName('update:debug')
54 ->setDescription($this->trans('commands.update.debug.description'));
60 protected function execute(InputInterface $input, OutputInterface $output)
62 $io = new DrupalStyle($input, $output);
64 $this->site->loadLegacyFile('/core/includes/update.inc');
65 $this->site->loadLegacyFile('/core/includes/install.inc');
67 drupal_load_updates();
68 update_fix_compatibility();
70 $requirements = update_check_requirements();
71 $severity = drupal_requirements_severity($requirements);
72 $updates = update_get_update_list();
76 if ($severity == REQUIREMENT_ERROR || ($severity == REQUIREMENT_WARNING)) {
77 $this->populateRequirements($io, $requirements);
78 } elseif (empty($updates)) {
79 $io->info($this->trans('commands.update.debug.messages.no-updates'));
81 $this->populateUpdate($io, $updates);
82 $this->populatePostUpdate($io);
87 * @param \Drupal\Console\Core\Style\DrupalStyle $io
88 * @param $requirements
90 private function populateRequirements(DrupalStyle $io, $requirements)
92 $io->info($this->trans('commands.update.debug.messages.requirements-error'));
95 $this->trans('commands.update.debug.messages.severity'),
96 $this->trans('commands.update.debug.messages.title'),
97 $this->trans('commands.update.debug.messages.value'),
98 $this->trans('commands.update.debug.messages.description'),
102 foreach ($requirements as $requirement) {
104 $requirement['minimum schema'],
105 [REQUIREMENT_ERROR, REQUIREMENT_WARNING]
107 if ((isset($requirement['minimum schema'])) && ($minimum)) {
109 $requirement['severity'],
110 $requirement['title'],
111 $requirement['value'],
112 $requirement['description'],
117 $io->table($tableHeader, $tableRows);
121 * @param \Drupal\Console\Core\Style\DrupalStyle $io
124 private function populateUpdate(DrupalStyle $io, $updates)
126 $io->info($this->trans('commands.update.debug.messages.module-list'));
128 $this->trans('commands.update.debug.messages.module'),
129 $this->trans('commands.update.debug.messages.update-n'),
130 $this->trans('commands.update.debug.messages.description')
133 foreach ($updates as $module => $module_updates) {
134 foreach ($module_updates['pending'] as $update_n => $update) {
135 list(, $description) = explode($update_n . " - ", $update);
143 $io->table($tableHeader, $tableRows);
147 * @param \Drupal\Console\Core\Style\DrupalStyle $io
149 private function populatePostUpdate(DrupalStyle $io)
152 $this->trans('commands.update.debug.messages.module-list-post-update')
155 $this->trans('commands.update.debug.messages.module'),
156 $this->trans('commands.update.debug.messages.post-update'),
157 $this->trans('commands.update.debug.messages.description')
160 $postUpdates = $this->postUpdateRegistry->getPendingUpdateInformation();
162 foreach ($postUpdates as $module => $module_updates) {
163 foreach ($module_updates['pending'] as $postUpdateFunction => $message) {
171 $io->table($tableHeader, $tableRows);