build-configs/src/Action/CreateFinalConfigurationData.php
Oliver Davies f16ccb81bb fix: extensions could be null
Warning: Undefined array key "extensions" in /home/opdavies/Code/github.com/OliverDaviesLtd/build-configs/src/Action/CreateFinalConfigurationData.php on line 44

Warning: Trying to access array offset on value of type null in /home/opdavies/Code/github.com/OliverDaviesLtd/build-configs/src/Action/CreateFinalConfigurationData.php on line 44
2023-08-26 23:08:44 +01:00

53 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Action;
use Illuminate\Support\Arr;
use Symfony\Component\Yaml\Yaml;
final class CreateFinalConfigurationData
{
public function handle(string $configFile, \Closure $next) {
$configurationData = array_merge(
Yaml::parseFile(filename: __DIR__ . '/../../resources/build.defaults.yaml'),
Yaml::parseFile(filename: $configFile),
);
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',
// 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);
}
}