This task is available as package at: https://packagist.org/packages/enrise/soy-symfony-build-parameters-task
You can run: composer require enrise/soy-symfony-build-parameters-task
After installing you can follow the usage below, if you don't know soy, first check: https://github.com/soy-php/soy
This task aims on generating the parameters.yml
for symfony configurations, for that using environment strategies.
- Read a global environment file:
files/env/environment.global.yml
- Read a environment file:
files/env/environment.dev.yml
- Reads a templace file:
app/config/parameters.dist.yml
- Generates the final parameters file:
app/config/parameters.yml
<?php
use Enrise\Soy\SymfonyBuildParameters\ParametersTask;
use Enrise\Soy\SymfonyBuildParameters\PrepareEnvironmentTask;
use Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask;
$recipe = new \Soy\Recipe();
$recipe->component('symfony-parameters', function (PrepareSymfonyEnvironmentTask $environmentTask) {
$environmentTask
->run();
})
->cli([ParametersTask::class, 'prepareCli'])
->cli([PrepareEnvironmentTask::class, 'prepareCli'])
->cli([PrepareSymfonyEnvironmentTask::class, 'prepareCli'])
;
# ./vendor/bin/soy symfony-parameters
Running Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask
Running Enrise\Soy\SymfonyBuildParameters\PrepareEnvironmentTask
Template file app/config/parameters.yml.dist
Destination file app/config/parameters.yml
Destination file will be replaced
Running Enrise\Soy\SymfonyBuildParameters\ParametersTask
Read environment file files/environment/environment.local.yml
Read global environment file files/environment/environment.global.yml
app/config/parameters.yml file generated successfully
<?php
use Enrise\Soy\SymfonyBuildParameters\ParametersTask;
use Enrise\Soy\SymfonyBuildParameters\PrepareEnvironmentTask;
use Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask;
$recipe = new \Soy\Recipe();
$recipe->component('default', function (PrepareSymfonyEnvironmentTask $environmentTask) {
$environmentTask
->run();
})
->cli([ParametersTask::class, 'prepareCli'])
->cli([PrepareEnvironmentTask::class, 'prepareCli'])
->cli([PrepareSymfonyEnvironmentTask::class, 'prepareCli'])
;
This way will satisfy all tasks dependencies and also give total control. The help command will look like:
Optional Arguments:
component (default: default)
The component to run
--help
Show usage
--version
Show version
--no-diagnostics
Disable diagnostics
--recipe recipe (default: recipe.php)
The recipe file to use
--env-path env-path (default: files/environment)
The directory which contains the env files
--env env (default: dev)
The current environment name. I.E.: dev, test, prod
--dest-file dest-file (default: app/config/parameters.yml)
The destination file
--src-file src-file (default: app/config/parameters.yml.dist)
The source file used as template for generating the dist file
- --env-path env-path (default:
files/environment
) - --env env (default:
dev
) - --dest-file dest-file (default:
app/config/parameters.yml
) - --src-file src-file (default:
app/config/parameters.yml.dist
)
# SYMFONY_ENV=test ./vendor/bin/soy
Running Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask
Symfony Environment detected as "test"
# SYMFONY_ENV=test ./vendor/bin/soy --env=local
Running Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask
Symfony Environment detected as "local"
Recipe
$recipe->component(
'symfony-prod',
function (PrepareSymfonyEnvironmentTask $sfEnvironmentTask, ParametersTask $parametersTask) {
$parametersTask->setEnv('prod');
$sfEnvironmentTask
->run();
}
)
->cli([ParametersTask::class, 'prepareCli'])
->cli([PrepareEnvironmentTask::class, 'prepareCli'])
->cli([PrepareSymfonyEnvironmentTask::class, 'prepareCli'])
;
# SYMFONY_ENV=test ./vendor/bin/soy --env=local
Running Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask
Symfony Environment detected as "prod"