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;
}
}