'sculpin', 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']); // Alias `symfony-cli` to `symfony`. In the future, this allows for // different configurations for CLI-based and web-based applications. if ($configurationData['type'] === 'symfony-cli') { $configurationData['type'] = 'symfony'; } if (isset($configurationData['docker-compose'])) { $configurationData['dockerCompose'] = $configurationData['docker-compose']; $configurationData['docker-compose'] = null; } $configurationData['managedText'] = 'Do not edit this file. It is automatically generated by https://www.oliverdavies.uk/build-configs.'; $basePackages = [ 'git', 'libpng-dev', 'libjpeg-dev', 'libzip-dev', // TODO: only add `mariadb-client` if MariaDB is used. 'mariadb-client', 'unzip', ]; $phpExtensions = [ 'gd', 'opcache', // TODO: only add `pdo_mysql` if its used. 'pdo_mysql', 'zip', ]; $configurationData['dockerfile']['stages']['build']['packages'] = $basePackages; $configurationData['dockerfile']['stages']['build']['extensions']['install'] = collect($phpExtensions) ->merge(Arr::get($configurationData, 'dockerfile.stages.build.extensions.install')) ->unique() ->sort() ->toArray(); return $next($configurationData); } }