1
0
mirror of https://github.com/flarum/core.git synced 2025-06-25 20:24:56 +02:00

feat: cli command for enabling or disabling an extension ()

This commit is contained in:
IanM
2023-05-01 08:06:52 +01:00
committed by GitHub
parent 919c3bb770
commit b4f3f0558e
2 changed files with 81 additions and 1 deletions
framework/core/src

@ -12,6 +12,7 @@ namespace Flarum\Console;
use Flarum\Console\Cache\Factory;
use Flarum\Database\Console\MigrateCommand;
use Flarum\Database\Console\ResetCommand;
use Flarum\Extension\Console\ToggleExtensionCommand;
use Flarum\Foundation\AbstractServiceProvider;
use Flarum\Foundation\Console\AssetsPublishCommand;
use Flarum\Foundation\Console\CacheClearCommand;
@ -63,7 +64,8 @@ class ConsoleServiceProvider extends AbstractServiceProvider
MigrateCommand::class,
ResetCommand::class,
ScheduleListCommand::class,
ScheduleRunCommand::class
ScheduleRunCommand::class,
ToggleExtensionCommand::class
// Used internally to create DB dumps before major releases.
// \Flarum\Database\Console\GenerateDumpCommand::class
];

@ -0,0 +1,78 @@
<?php
/*
* This file is part of Flarum.
*
* For detailed copyright and license information, please view the
* LICENSE file that was distributed with this source code.
*/
namespace Flarum\Extension\Console;
use Flarum\Console\AbstractCommand;
use Flarum\Extension\ExtensionManager;
class ToggleExtensionCommand extends AbstractCommand
{
/**
* @var ExtensionManager
*/
protected $extensionManager;
public function __construct(ExtensionManager $extensionManager)
{
$this->extensionManager = $extensionManager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
protected function configure()
{
$this
->setName('extension:enable')
->setAliases(['extension:disable'])
->setDescription('Enable or disable an extension.')
->addArgument('extension-id', null, 'The ID of the extension to enable or disable.');
}
/**
* {@inheritdoc}
*/
protected function fire()
{
$name = $this->input->getArgument('extension-id');
$enabling = $this->input->getFirstArgument() === 'extension:enable';
if ($this->extensionManager->getExtension($name) === null) {
$this->error("There are no extensions by the ID of '$name'.");
return;
}
switch ($enabling) {
case true:
if ($this->extensionManager->isEnabled($name)) {
$this->info("The '$name' extension is already enabled.");
return;
} else {
$this->info("Enabling '$name' extension...");
$this->extensionManager->enable($name);
}
break;
case false:
if (! $this->extensionManager->isEnabled($name)) {
$this->info("The '$name' extension is already disabled.");
return;
} else {
$this->info("Disabling '$name' extension...");
$this->extensionManager->disable($name);
}
break;
}
}
}