feat: add support for Astro projects

This commit is contained in:
Oliver Davies 2023-09-24 18:10:24 +01:00
parent 022315edd3
commit cd4355bbc1
6 changed files with 75 additions and 4 deletions

View file

@ -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'));

View file

@ -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
View file

@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
namespace App\Enum;
enum ProjectType
{
case Astro;
}

View file

@ -0,0 +1,3 @@
# {{ managedText|raw }}
use flake

View file

@ -0,0 +1,25 @@
# {{ managedText|raw }}
{
inputs = {
devshell.url = "github:numtide/devshell";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
imports = [ inputs.devshell.flakeModule ];
systems = [ "x86_64-linux" ];
perSystem = { config, self', inputs', pkgs, system, ... }: {
devshells.default = {
packages = with pkgs; [
{% for package in flake.devshell.packages %}
"{{ package }}"
{% endfor %}
];
};
};
};
}

View file

@ -0,0 +1,12 @@
// {{ managedText }}
{
"extends": "astro/tsconfigs/strict",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"~/*": ["src/*"]
},
"strictNullChecks": true
}
}