From 8698dc028358e208746ff504ad31de038aa92e83 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Wed, 19 Jun 2024 17:17:28 +0200 Subject: [PATCH] !!! TASK: Deprecate additional site kickstart generators and show helpful output for default afx case MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ``` neos-manufacture-90 git:(9.0) ✗ flow kickstart:site Vendor.Site Created .../Document.Page.yaml Created .../Document.Homepage.yaml Create a new site based on the new package "Vendor.Site" by running the site create command ./flow site:create vendor-site Vendor.Site Vendor.Site:Document.Homepage ``` --- .../Command/KickstartCommandController.php | 44 ++++++++++++------- .../Generator/AfxTemplateGenerator.php | 1 + .../SitePackageGeneratorInterface.php | 3 ++ .../FusionRecursiveDirectoryRenderer.php | 3 ++ .../Service/SimpleTemplateRenderer.php | 3 ++ .../SiteGeneratorCollectingService.php | 3 ++ .../SitePackageGeneratorNameService.php | 3 ++ 7 files changed, 45 insertions(+), 15 deletions(-) diff --git a/Neos.SiteKickstarter/Classes/Command/KickstartCommandController.php b/Neos.SiteKickstarter/Classes/Command/KickstartCommandController.php index 9f31d1f4ab7..8dd2936f5bf 100755 --- a/Neos.SiteKickstarter/Classes/Command/KickstartCommandController.php +++ b/Neos.SiteKickstarter/Classes/Command/KickstartCommandController.php @@ -15,6 +15,7 @@ use Neos\Flow\Annotations as Flow; use Neos\Flow\Cli\CommandController; use Neos\Flow\Package\PackageManager; +use Neos\SiteKickstarter\Generator\AfxTemplateGenerator; use Neos\SiteKickstarter\Service\SiteGeneratorCollectingService; use Neos\SiteKickstarter\Service\SitePackageGeneratorNameService; @@ -62,27 +63,40 @@ public function siteCommand($packageKey): void $generatorClasses = $this->siteGeneratorCollectingService->getAllGenerators(); - $selection = []; - $nameToClassMap = []; - foreach ($generatorClasses as $generatorClass) { - $name = $this->sitePackageGeneratorNameService->getNameOfSitePackageGenerator($generatorClass); + if (count($generatorClasses) > 1) { + // legacy custom additional generators installed, so we need to show the select box + $selection = []; + $nameToClassMap = []; + foreach ($generatorClasses as $generatorClass) { + $name = $this->sitePackageGeneratorNameService->getNameOfSitePackageGenerator($generatorClass); - $selection[] = $name; - $nameToClassMap[$name] = $generatorClass; - } - - /** @var string $generatorName */ - $generatorName = $this->output->select( - sprintf('What generator do you want to use? (%s): ', array_key_first($selection)), - $selection, - array_key_first($selection) - ); + $selection[] = $name; + $nameToClassMap[$name] = $generatorClass; + } - $generatorClass = $nameToClassMap[$generatorName]; + /** @var string $generatorName */ + $generatorName = $this->output->select( + sprintf('What generator do you want to use? (%s): ', array_key_first($selection)), + $selection, + array_key_first($selection) + ); + $generatorClass = $nameToClassMap[$generatorName]; + } else { + // default happy case, only one generator which MUST be the afx default + $generatorClass = AfxTemplateGenerator::class; + } $generatorService = $this->objectManager->get($generatorClass); $generatedFiles = $generatorService->generateSitePackage($packageKey); $this->outputLine(implode(PHP_EOL, $generatedFiles)); + + $this->outputLine(); + $this->outputLine(sprintf('Create a new site based on the new package "%s" by running the site create command', $packageKey)); + + if ($generatorClass === AfxTemplateGenerator::class) { + $guessedSiteName = strtolower(str_replace('.', '-', $packageKey)); + $this->outputLine(sprintf('./flow site:create %1$s %2$s %2$s:Document.Homepage', $guessedSiteName, $packageKey)); + } } } diff --git a/Neos.SiteKickstarter/Classes/Generator/AfxTemplateGenerator.php b/Neos.SiteKickstarter/Classes/Generator/AfxTemplateGenerator.php index 0efc8448ad3..2978a8436e5 100755 --- a/Neos.SiteKickstarter/Classes/Generator/AfxTemplateGenerator.php +++ b/Neos.SiteKickstarter/Classes/Generator/AfxTemplateGenerator.php @@ -24,6 +24,7 @@ /** * Service to generate site packages * + * @internal */ class AfxTemplateGenerator extends GeneratorService implements SitePackageGeneratorInterface { diff --git a/Neos.SiteKickstarter/Classes/Generator/SitePackageGeneratorInterface.php b/Neos.SiteKickstarter/Classes/Generator/SitePackageGeneratorInterface.php index 4beb32acc81..d88aeef4033 100755 --- a/Neos.SiteKickstarter/Classes/Generator/SitePackageGeneratorInterface.php +++ b/Neos.SiteKickstarter/Classes/Generator/SitePackageGeneratorInterface.php @@ -13,6 +13,9 @@ * source code. */ +/** + * @deprecated with Neos 9. Custom generators for "kickstart:site" are discouraged. + */ interface SitePackageGeneratorInterface { /** diff --git a/Neos.SiteKickstarter/Classes/Service/FusionRecursiveDirectoryRenderer.php b/Neos.SiteKickstarter/Classes/Service/FusionRecursiveDirectoryRenderer.php index 01a1e59a025..4ced143c1ac 100755 --- a/Neos.SiteKickstarter/Classes/Service/FusionRecursiveDirectoryRenderer.php +++ b/Neos.SiteKickstarter/Classes/Service/FusionRecursiveDirectoryRenderer.php @@ -15,6 +15,9 @@ use Neos\Flow\Annotations as Flow; +/** + * @internal + */ class FusionRecursiveDirectoryRenderer { /** diff --git a/Neos.SiteKickstarter/Classes/Service/SimpleTemplateRenderer.php b/Neos.SiteKickstarter/Classes/Service/SimpleTemplateRenderer.php index 089f7b9a4cc..19137c17ca6 100755 --- a/Neos.SiteKickstarter/Classes/Service/SimpleTemplateRenderer.php +++ b/Neos.SiteKickstarter/Classes/Service/SimpleTemplateRenderer.php @@ -13,6 +13,9 @@ * source code. */ +/** + * @internal + */ class SimpleTemplateRenderer { /** diff --git a/Neos.SiteKickstarter/Classes/Service/SiteGeneratorCollectingService.php b/Neos.SiteKickstarter/Classes/Service/SiteGeneratorCollectingService.php index 96c95af8718..b54d0e722e4 100644 --- a/Neos.SiteKickstarter/Classes/Service/SiteGeneratorCollectingService.php +++ b/Neos.SiteKickstarter/Classes/Service/SiteGeneratorCollectingService.php @@ -17,6 +17,9 @@ use Neos\Flow\Annotations as Flow; use Neos\SiteKickstarter\Generator\SitePackageGeneratorInterface; +/** + * @internal + */ class SiteGeneratorCollectingService { /** diff --git a/Neos.SiteKickstarter/Classes/Service/SitePackageGeneratorNameService.php b/Neos.SiteKickstarter/Classes/Service/SitePackageGeneratorNameService.php index 33f95cdfa36..6ec0d71a7c5 100755 --- a/Neos.SiteKickstarter/Classes/Service/SitePackageGeneratorNameService.php +++ b/Neos.SiteKickstarter/Classes/Service/SitePackageGeneratorNameService.php @@ -17,6 +17,9 @@ use Neos\Flow\Annotations as Flow; use Neos\SiteKickstarter\Generator\SitePackageGeneratorInterface; +/** + * @internal + */ class SitePackageGeneratorNameService { /**