From e81303b7bc5c563db85bc7ddb8c47dcd2409e0c0 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 31 Jul 2024 09:00:00 +0100 Subject: [PATCH] Add support for the new `build-configs.yaml` file - `template` is mapped to `type`. - Parameters are moved into a `parameters` key. - `parameters.nix` is mapped to `parameters.flake` (`parameters.flake` will be deprecated). --- src/Action/CreateFinalConfigurationData.php | 28 ++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/Action/CreateFinalConfigurationData.php b/src/Action/CreateFinalConfigurationData.php index 7ab85a0..8b66c73 100644 --- a/src/Action/CreateFinalConfigurationData.php +++ b/src/Action/CreateFinalConfigurationData.php @@ -9,17 +9,39 @@ use Symfony\Component\Yaml\Yaml; final class CreateFinalConfigurationData { - public function handle(string $configFile, \Closure $next) { + public function handle(string $configFile, \Closure $next) + { // Perform some initial checks before the defaults are merged. $configurationData = Yaml::parseFile(filename: $configFile); - $configurationData['isDocker'] = isset($configurationData['dockerfile']); - $configurationData['isFlake'] = isset($configurationData['flake']); $configurationData = array_replace_recursive( Yaml::parseFile(filename: __DIR__ . '/../../resources/build.defaults.yaml'), $configurationData, ); + // Map the new `template` value to `type`. + if (isset($configurationData['template'])) { + $configurationData['type'] = match ($configurationData['template']) { + default => $configurationData['template'], + }; + + $configurationData['template'] = null; + } + + // Flatten the new `parameters` into the main configuration. + if (isset($configurationData['parameters'])) { + $configurationData = array_merge($configurationData, [...$configurationData['parameters']]); + } + + // `flake` renamed to `nix`. + if (isset($configurationData['nix'])) { + $configurationData['flake'] = $configurationData['nix']; + $configurationData['nix'] = null; + } + + $configurationData['isDocker'] = isset($configurationData['dockerfile']); + $configurationData['isFlake'] = isset($configurationData['flake']); + if (isset($configurationData['docker-compose'])) { $configurationData['dockerCompose'] = $configurationData['docker-compose']; $configurationData['docker-compose'] = null;