installer = $installer; $this->appManager = $appManager; $this->updateChecker = $updateChecker; } protected function configure(): void { $this ->setName('update:check') ->setDescription('Check for server and app updates') ; } protected function execute(InputInterface $input, OutputInterface $output): int { $updatesAvailableCount = 0; // Server $r = $this->updateChecker->getUpdateState(); if (isset($r['updateAvailable']) && $r['updateAvailable']) { $output->writeln($r['updateVersionString'] . ' is available. Get more information on how to update at '. $r['updateLink'] . '.'); $updatesAvailableCount += 1; } // Apps $apps = $this->appManager->getInstalledApps(); foreach ($apps as $app) { $update = $this->installer->isUpdateAvailable($app); if ($update !== false) { $output->writeln('Update for ' . $app . ' to version ' . $update . ' is available.'); $updatesAvailableCount += 1; } } // Report summary if ($updatesAvailableCount === 0) { $output->writeln('Everything up to date'); } elseif ($updatesAvailableCount === 1) { $output->writeln('1 update available'); } else { $output->writeln('' . $updatesAvailableCount . ' updates available'); } return 0; } }