diff --git a/src/Action/CreateListOfFilesToGenerate.php b/src/Action/CreateListOfFilesToGenerate.php index f80b514..456e7d4 100644 --- a/src/Action/CreateListOfFilesToGenerate.php +++ b/src/Action/CreateListOfFilesToGenerate.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Action; +use App\DataTransferObject\Config; use App\DataTransferObject\TemplateFile; use App\Enum\Language; use App\Enum\WebServer; @@ -11,7 +12,14 @@ use Illuminate\Support\Arr; final class CreateListOfFilesToGenerate { - public function handle(array $configurationData, \Closure $next) { + public function handle(array $configurationDataAndDto, \Closure $next) { + + /** + * @var Config $configurationDataDto, + * @var array $configurationData + */ + [$configurationData, $configurationDataDto] = $configurationDataAndDto; + /** @var Collection */ $filesToGenerate = collect([ new TemplateFile(data: 'common/.dockerignore', name: '.dockerignore'), @@ -93,7 +101,7 @@ final class CreateListOfFilesToGenerate ); } - return $next([$configurationData, $filesToGenerate]); + return $next([$configurationData, $configurationDataDto, $filesToGenerate]); } private static function isCaddy(?string $webServer): bool diff --git a/src/Action/GenerateConfigurationFiles.php b/src/Action/GenerateConfigurationFiles.php index 1550605..7e221cb 100644 --- a/src/Action/GenerateConfigurationFiles.php +++ b/src/Action/GenerateConfigurationFiles.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Action; +use App\DataTransferObject\Config; use App\DataTransferObject\TemplateFile; use Illuminate\Support\Collection; use Symfony\Component\Filesystem\Filesystem; @@ -22,9 +23,10 @@ final class GenerateConfigurationFiles { /** * @var Collection $filesToGenerate + * @var Config $configurationDataDto, * @var array $configurationData */ - [$configurationData, $filesToGenerate] = $filesToGenerateAndConfigurationData; + [$configurationData, $configurationDataDto, $filesToGenerate] = $filesToGenerateAndConfigurationData; $filesToGenerate->each(function(TemplateFile $templateFile) use ($configurationData): void { if ($templateFile->path !== null) { @@ -53,6 +55,6 @@ final class GenerateConfigurationFiles $this->filesystem->chmod("{$outputDir}/.githooks/pre-push", 0755); } - return $next([$configurationData, $filesToGenerate]); + return $next([$configurationDataDto, $filesToGenerate]); } } diff --git a/src/Action/ValidateConfigurationData.php b/src/Action/ValidateConfigurationData.php index b66353e..f435686 100644 --- a/src/Action/ValidateConfigurationData.php +++ b/src/Action/ValidateConfigurationData.php @@ -17,15 +17,16 @@ final class ValidateConfigurationData // Convert the input to a configuration data object. $normalizer = new ObjectNormalizer(null, new CamelCaseToSnakeCaseNameConverter()); $serializer = new Serializer([$normalizer], [new JsonEncoder()]); - $configurationDataObject = $serializer->deserialize(json_encode($configurationData), Config::class, 'json'); + + $configurationDataDto = $serializer->deserialize(json_encode($configurationData), Config::class, 'json'); $validator = Validation::createValidatorBuilder()->enableAnnotationMapping()->getValidator(); - $violations = $validator->validate($configurationDataObject); + $violations = $validator->validate($configurationDataDto); if (0 < $violations->count()) { throw new \RuntimeException('Configuration is invalid.'); } - return $next($configurationData); + return $next([$configurationData, $configurationDataDto]); } } diff --git a/src/Command/GenerateCommand.php b/src/Command/GenerateCommand.php index c74c7d3..c153cfa 100644 --- a/src/Command/GenerateCommand.php +++ b/src/Command/GenerateCommand.php @@ -76,14 +76,14 @@ class GenerateCommand extends Command /** * @var Collection $generatedFiles - * @var array $configurationData + * @var Config $configurationData */ [$configurationData, $generatedFiles] = (new Pipeline()) ->send($configFile) ->through($pipelines) ->thenReturn(); - $io->info("Building configuration for {$configurationData['name']}."); + $io->info("Building configuration for {$configurationData->name}."); $io->write('Generated files:'); $io->listing(static::getListOfFiles(filesToGenerate: $generatedFiles)->toArray());