mirror of
https://github.com/flarum/core.git
synced 2025-07-15 05:46:24 +02:00
feat: cli command for enabling or disabling an extension (#3816)
This commit is contained in:
@ -12,6 +12,7 @@ namespace Flarum\Console;
|
|||||||
use Flarum\Console\Cache\Factory;
|
use Flarum\Console\Cache\Factory;
|
||||||
use Flarum\Database\Console\MigrateCommand;
|
use Flarum\Database\Console\MigrateCommand;
|
||||||
use Flarum\Database\Console\ResetCommand;
|
use Flarum\Database\Console\ResetCommand;
|
||||||
|
use Flarum\Extension\Console\ToggleExtensionCommand;
|
||||||
use Flarum\Foundation\AbstractServiceProvider;
|
use Flarum\Foundation\AbstractServiceProvider;
|
||||||
use Flarum\Foundation\Console\AssetsPublishCommand;
|
use Flarum\Foundation\Console\AssetsPublishCommand;
|
||||||
use Flarum\Foundation\Console\CacheClearCommand;
|
use Flarum\Foundation\Console\CacheClearCommand;
|
||||||
@ -63,7 +64,8 @@ class ConsoleServiceProvider extends AbstractServiceProvider
|
|||||||
MigrateCommand::class,
|
MigrateCommand::class,
|
||||||
ResetCommand::class,
|
ResetCommand::class,
|
||||||
ScheduleListCommand::class,
|
ScheduleListCommand::class,
|
||||||
ScheduleRunCommand::class
|
ScheduleRunCommand::class,
|
||||||
|
ToggleExtensionCommand::class
|
||||||
// Used internally to create DB dumps before major releases.
|
// Used internally to create DB dumps before major releases.
|
||||||
// \Flarum\Database\Console\GenerateDumpCommand::class
|
// \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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user