From e198cefa2fba602312c7ab8ef6988c8e5b93f173 Mon Sep 17 00:00:00 2001 From: Maxime Leclercq Date: Mon, 25 Mar 2024 11:55:54 +0100 Subject: [PATCH 1/2] feat: add BetterAdmin plugin in plugins list --- castor/sylius.php | 1 + 1 file changed, 1 insertion(+) diff --git a/castor/sylius.php b/castor/sylius.php index 6913713..2fc87f5 100644 --- a/castor/sylius.php +++ b/castor/sylius.php @@ -27,6 +27,7 @@ function getPlugins(): array run('symfony console doctrine:migrations:diff --namespace="App\Migrations" || true', path: 'apps/sylius'); // Generate app migration run('symfony console doctrine:migrations:migrate -n', path: 'apps/sylius'); // Run app migrations }, + 'monsieurbiz/sylius-better-admin-plugin' => function () {}, 'monsieurbiz/sylius-cms-page-plugin' => function () { run('symfony console doctrine:migrations:migrate -n', path: 'apps/sylius'); // Run plugin migrations }, From 4fe6c71f719931c08f7ba20d11463d4dd074146a Mon Sep 17 00:00:00 2001 From: Maxime Leclercq Date: Mon, 25 Mar 2024 11:56:39 +0100 Subject: [PATCH 2/2] feat: add option to specify plugins to be installed --- README.md | 3 ++- castor/sylius.php | 13 +++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index f0aa0df..3227d4d 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,8 @@ Simply run: `castor github:env:setup` and follow the instructions. ## Install Sylius plugins -After installing Sylius, you can install the plugins you need: `castor sylius:plugins:install`. +After installing Sylius, you can install the plugins you need: `castor sylius:plugins:install`. +Use the `--plugins` option to specify the plugins you want to install: `castor sylius:plugins:install --plugins=monsieurbiz/sylius-homepage-plugin --plugins=monsieurbiz/sylius-cms-page-plugin`. You can find the list of all plugins available using `castor sylius:plugins:list`. diff --git a/castor/sylius.php b/castor/sylius.php index 2fc87f5..8800f73 100644 --- a/castor/sylius.php +++ b/castor/sylius.php @@ -2,11 +2,10 @@ namespace MonsieurBiz\SyliusSetup\Castor\Sylius; +use Castor\Attribute\AsOption; use Castor\Attribute\AsTask; - +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Question\ChoiceQuestion; -use function Castor\get_application; -use function Castor\get_output; use function Castor\io; use function Castor\run; @@ -143,9 +142,11 @@ function listPlugins(): void } #[AsTask(name: 'plugins:install', namespace: 'sylius', description: 'Install Sylius plugins locally')] -function installPlugins(): void -{ +function installPlugins( + #[AsOption(name: 'plugins', mode: InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, description: 'List of plugins to install')] array $selectedPlugins = [] +): void { $plugins = getPlugins(); + $selectedPlugins = array_filter($selectedPlugins, fn ($plugin) => array_key_exists($plugin, $plugins)); $question = new ChoiceQuestion( 'Please select the plugins you want to install', @@ -153,7 +154,7 @@ function installPlugins(): void ); $question->setMultiselect(true); - $selectedPlugins = io()->askQuestion($question); + $selectedPlugins = $selectedPlugins ?: io()->askQuestion($question); run('symfony composer config --no-plugins --json extra.symfony.endpoint \'["https://api.github.com/repos/Sylius/SyliusRecipes/contents/index.json?ref=flex/main","https://api.github.com/repos/monsieurbiz/symfony-recipes/contents/index.json?ref=flex/master","flex://defaults"]\'', path: 'apps/sylius');