addOption('refresh', null, InputOption::VALUE_NONE, sprintf('Also refetch items stored more than %d days ago, oldest first', ContentSyncer::REFRESH_AFTER_DAYS)) ->addOption('ignore-window', null, InputOption::VALUE_NONE, sprintf('Fetch every due page, not just %d, outside the night window', ContentSyncer::PAGES_OUTSIDE_WINDOW)) ; } protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); if (!$this->lock()) { $io->warning('Another content sync is running.'); return Command::SUCCESS; } try { $report = $this->syncer->run((bool) $input->getOption('refresh'), (bool) $input->getOption('ignore-window')); } finally { $this->release(); } $io->definitionList( ['Added' => $report->added], ['Deleted' => $report->deleted], ['Records fetched' => $report->records], ['Pages fetched' => $report->pages], ['Failed' => $report->failed], ['Pages deferred' => $report->deferred], ); if (null !== $report->pagePhaseEndedBy) { $io->warning('Page phase ended early: '.$report->pagePhaseEndedBy); } if (null !== $report->stoppedBy) { $io->error('Run stopped: '.$report->stoppedBy); return Command::FAILURE; } $io->success('Content feed synced.'); return Command::SUCCESS; } }