addOption('site', null, InputOption::VALUE_REQUIRED, 'Site identifier', 'vitec'); } protected function execute(InputInterface $input, OutputInterface $output): int { $identifier = (string)$input->getOption('site'); $site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByIdentifier($identifier); if (!method_exists($site, 'getSets')) { $output->writeln('This TYPO3 version does not expose Site::getSets().'); return Command::FAILURE; } $sets = $site->getSets(); $output->writeln(sprintf('Site "%s": %d sets, in load order', $identifier, count($sets))); $position = 0; $headlessAt = null; $vitecAt = null; foreach ($sets as $set) { $position++; $name = is_object($set) && property_exists($set, 'name') ? (string)$set->name : (string)$set; if ($name === 'friendsoftypo3/headless') { $headlessAt = $position; } if ($name === 'evomedien/vitecset') { $vitecAt = $position; } $mark = in_array($name, ['friendsoftypo3/headless', 'evomedien/vitecset'], true) ? ' <-- ' : ' '; $output->writeln(sprintf('%2d.%s%s', $position, $mark, $name)); } $output->writeln(''); if ($headlessAt === null || $vitecAt === null) { $output->writeln('headless or vitecset is not in the resolved list at all.'); return Command::SUCCESS; } if ($headlessAt > $vitecAt) { $output->writeln(sprintf( 'PROBLEM: headless loads at %d, AFTER vitecset at %d - it resets `page` and drops the page-level fields.', $headlessAt, $vitecAt )); } else { $output->writeln(sprintf( 'Order is fine: headless at %d, vitecset at %d.', $headlessAt, $vitecAt )); } return Command::SUCCESS; } }