Don't generate files if the --dry-run option is set

* Add the --dry-run option.
* Add a warning if --dry-run is used saying no files have been
  generated.
This commit is contained in:
Oliver Davies 2024-03-01 15:19:46 +00:00
parent 85c370c438
commit ea43e67da8
2 changed files with 16 additions and 4 deletions

View file

@ -16,6 +16,7 @@ final class GenerateConfigurationFiles
private Filesystem $filesystem, private Filesystem $filesystem,
private Environment $twig, private Environment $twig,
private string $outputDir, private string $outputDir,
private bool $isDryRun = false,
) { ) {
} }
@ -28,7 +29,10 @@ final class GenerateConfigurationFiles
*/ */
[$configurationData, $configurationDataDto, $filesToGenerate] = $filesToGenerateAndConfigurationData; [$configurationData, $configurationDataDto, $filesToGenerate] = $filesToGenerateAndConfigurationData;
$filesToGenerate->each(function(TemplateFile $templateFile) use ($configurationData): void { if ($this->isDryRun) {
return $next([$configurationDataDto, $filesToGenerate]);
}
if ($templateFile->path !== null) { if ($templateFile->path !== null) {
if (!$this->filesystem->exists($templateFile->path)) { if (!$this->filesystem->exists($templateFile->path)) {
$this->filesystem->mkdir("{$this->outputDir}/{$templateFile->path}"); $this->filesystem->mkdir("{$this->outputDir}/{$templateFile->path}");

View file

@ -51,6 +51,11 @@ class GenerateCommand extends Command
description: 'The directory to create files in', description: 'The directory to create files in',
default: '.', default: '.',
) )
->addOption(
name: 'dry-run',
mode: InputOption::VALUE_NONE,
description: 'Whether to generate files or not',
)
; ;
} }
@ -60,18 +65,17 @@ class GenerateCommand extends Command
$configFile = $input->getOption(name: 'config-file'); $configFile = $input->getOption(name: 'config-file');
$outputDir = $input->getOption(name: 'output-dir'); $outputDir = $input->getOption(name: 'output-dir');
$isDryRun = $input->getOption(name: 'dry-run');
$pipelines = [ $pipelines = [
new CreateFinalConfigurationData(), new CreateFinalConfigurationData(),
new ValidateConfigurationData(), new ValidateConfigurationData(),
new CreateListOfFilesToGenerate(), new CreateListOfFilesToGenerate(),
new GenerateConfigurationFiles( new GenerateConfigurationFiles(
$this->filesystem, $this->filesystem,
$this->twig, $this->twig,
$outputDir, $outputDir,
$isDryRun,
), ),
]; ];
@ -86,6 +90,10 @@ class GenerateCommand extends Command
$io->info("Building configuration for {$configurationData->name}."); $io->info("Building configuration for {$configurationData->name}.");
if ($isDryRun === true) {
$io->warning('This is a dry run, no files have been generated.');
}
$io->write('Generated files:'); $io->write('Generated files:');
$io->listing(static::getListOfFiles(filesToGenerate: $generatedFiles)->toArray()); $io->listing(static::getListOfFiles(filesToGenerate: $generatedFiles)->toArray());