|
<?php |
|
|
|
namespace Kanboard\Console; |
|
|
|
use Kanboard\Core\Plugin\Installer; |
|
use Kanboard\Core\Plugin\PluginInstallerException; |
|
use LogicException; |
|
use Symfony\Component\Console\Input\InputArgument; |
|
use Symfony\Component\Console\Input\InputInterface; |
|
use Symfony\Component\Console\Output\OutputInterface; |
|
|
|
class PluginInstallCommand extends BaseCommand |
|
{ |
|
protected function configure() |
|
{ |
|
$this |
|
->setName('plugin:install') |
|
->setDescription('Install a plugin from a remote Zip archive') |
|
->addArgument('url', InputArgument::REQUIRED, 'Archive URL'); |
|
} |
|
|
|
protected function execute(InputInterface $input, OutputInterface $output): int |
|
{ |
|
if (!Installer::isConfigured()) { |
|
throw new LogicException('Kanboard is not configured to install plugins itself'); |
|
} |
|
|
|
try { |
|
$installer = new Installer($this->container); |
|
$installer->install($input->getArgument('url')); |
|
$output->writeln('<info>Plugin installed successfully</info>'); |
|
return 0; |
|
} catch (PluginInstallerException $e) { |
|
$output->writeln('<error>'.$e->getMessage().'</error>'); |
|
return 1; |
|
} |
|
} |
|
} |
|
|