Skip to content

Commit

Permalink
Merge pull request #32 from delyriand/feature/improve-plugin-install
Browse files Browse the repository at this point in the history
Add an option to specify the plugins to be installed
  • Loading branch information
Kiwikoti authored Mar 26, 2024
2 parents c926c74 + 4fe6c71 commit 9bf9216
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.

Expand Down
14 changes: 8 additions & 6 deletions castor/sylius.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -27,6 +26,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
},
Expand Down Expand Up @@ -142,17 +142,19 @@ 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',
array_keys($plugins)
);
$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');

Expand Down

0 comments on commit 9bf9216

Please sign in to comment.