feat: add support for Astro projects
This commit is contained in:
parent
022315edd3
commit
cd4355bbc1
6 changed files with 75 additions and 4 deletions
|
|
@ -7,6 +7,7 @@ namespace App\Action;
|
|||
use App\DataTransferObject\Config;
|
||||
use App\DataTransferObject\TemplateFile;
|
||||
use App\Enum\Language;
|
||||
use App\Enum\ProjectType;
|
||||
use App\Enum\WebServer;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Collection;
|
||||
|
|
@ -21,12 +22,32 @@ final class CreateListOfFilesToGenerate
|
|||
*/
|
||||
[$configurationData, $configurationDataDto] = $configurationDataAndDto;
|
||||
|
||||
$isDocker = static::isDocker($configurationData);
|
||||
$isFlake = static::isFlake($configurationData);
|
||||
|
||||
/** @var Collection<int, TemplateFile> */
|
||||
$filesToGenerate = collect();
|
||||
|
||||
switch (strtolower($configurationDataDto->type)) {
|
||||
case (strtolower(ProjectType::Astro->name)):
|
||||
$filesToGenerate = collect([
|
||||
['astro/.envrc', '.envrc'],
|
||||
['astro/flake.nix', 'flake.nix'],
|
||||
['astro/tsconfig.json', 'tsconfig.json'],
|
||||
])->map(function (array $file) {
|
||||
return new TemplateFile(
|
||||
data: $file[0],
|
||||
name: $file[1],
|
||||
path: null,
|
||||
);
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
if ($filesToGenerate->isNotEmpty()) {
|
||||
return $next([$configurationData, $configurationDataDto, $filesToGenerate]);
|
||||
}
|
||||
|
||||
$isDocker = static::isDocker($configurationData);
|
||||
$isFlake = static::isFlake($configurationData);
|
||||
|
||||
if ($isDocker) {
|
||||
$filesToGenerate->push(new TemplateFile(data: 'common/.dockerignore', name: '.dockerignore'));
|
||||
$filesToGenerate->push(new TemplateFile(data: 'common/.hadolint.yaml', name: '.hadolint.yaml'));
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ final class Config
|
|||
#[Assert\NotBlank]
|
||||
public string $name;
|
||||
|
||||
#[Assert\Choice(choices: ['drupal', 'fractal', 'laravel', 'php-library', 'vuejs'])]
|
||||
#[Assert\Choice(choices: ['astro', 'drupal', 'fractal', 'laravel', 'php-library', 'vuejs'])]
|
||||
#[Assert\NotBlank]
|
||||
public string $type;
|
||||
|
||||
|
|
|
|||
10
src/Enum/ProjectType.php
Normal file
10
src/Enum/ProjectType.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Enum;
|
||||
|
||||
enum ProjectType
|
||||
{
|
||||
case Astro;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue