Description
Hi 👋🏼!
I am coming here to gather some feedback on my idea before starting working on it.
Background
I wanted to create a POC of https://github.com/symfony/skeleton made for Sylius. I created a simple recipe for sylius/core-bundle
, then an example skeleton repo and I have found out my recipes does not work as another recipe already write files with the same name. Then, I noticed symfony/framework-bundle
is always put as the first recipe to be executed, and this is a thing I wish to be able to configure.
Goal
Somehow allow myself to make (in this POC case) sylius/core-bundle
as a first recipe to be executed. Of course, I can fork symfony/flex
, but it would be perfect to avoid this way.
Idea
The idea is simple, we allow configuring such list for example in this way:
{
...
"extra": {
"flex": {
"prioritized-recipes": [
"sylius/core-bundle",
"another/sylius-package",
...
]
}
}
...
}
In Flex
we could implement this +/- this way:
// symfony/framework-bundle recipe should always be applied first after the metapackages
// however, we allow to override it with a list of prioritized recipes
$recipes = $this->getPrioritizedRecipes();
$recipes = array_merge($recipes, [
'symfony/framework-bundle' => null,
]);
$packRecipes = [];
$metaRecipes = [];
instead current
// symfony/framework-bundle recipe should always be applied first after the metapackages
$recipes = [
'symfony/framework-bundle' => null,
];
$packRecipes = [];
$metaRecipes = [];
Why?
- In some projects, we may want to load our recipes before the Symfony's ones
- In frameworks based on Symfony (like Sylius) we need to set up the whole project in our own way, so
framework-bundle
as a first recipe to be executed makes it unable for us
Other options
I have not checked it yet, but I believe we can achieve the similar feature using Composer's Event Dispatcher. But first, I would like to hear if such a feature is welcomed. Or maybe you have a better idea how to solve this. I am open to provide such feature right after we agree on some solution.