/** * @param InputInterface $input * @param OutputInterface $output * @return int|null|void */ protected function execute(InputInterface $input, OutputInterface $output) { parent::bootstrapProcessWire($output); if (!\ProcessWire\wire('config')->moduleServiceKey) { throw new \RuntimeException('No module service key was found.'); } if ($input->getArgument('modules') && !$input->getOption('check')) { // upgrade specific modules $modules = explode(",", $input->getArgument('modules')); if ($modules) { $this->upgradeModules($modules, $output); } } else { \ProcessWire\wire('modules')->resetCache(); if ($moduleVersions = parent::getModuleVersions(true, $output)) { $output->writeln("<info>An upgrade is available for:</info>"); foreach ($moduleVersions as $name => $info) { $output->writeln(" - {$name}: {$info['local']} -> {$info['remote']}"); } } else { $output->writeln("<info>Your modules are up-to-date.</info>"); } } }