mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-11-28 10:30:42 +00:00
93 lines
3.4 KiB
PHP
93 lines
3.4 KiB
PHP
<?php
|
|
namespace Seeddms\Console\Commands;
|
|
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
|
|
|
|
|
|
use Seeddms\Seeddms\Settings;
|
|
use Seeddms\Seeddms\Translator;
|
|
use SeedDMS_Core_File;
|
|
use SeedDMS_View_Common;
|
|
use SeedDMS_Extension_Mgr;
|
|
use Log_file;
|
|
|
|
class ListextensionCommand extends Command
|
|
{
|
|
protected $settings;
|
|
|
|
protected $logger;
|
|
|
|
protected $translator;
|
|
|
|
protected $extmgr;
|
|
|
|
public function __construct(Settings $settings, Log_file $logger, Translator $translator, SeedDMS_Extension_Mgr $extmgr)
|
|
{
|
|
$this->settings = $settings;
|
|
$this->logger = $logger;
|
|
$this->translator = $translator;
|
|
$this->extmgr = $extmgr;
|
|
parent::__construct();
|
|
}
|
|
|
|
protected function configure()
|
|
{
|
|
$this->setName('ext:list')
|
|
->setDescription('List extensions')
|
|
->setHelp('Lists all enable and disable extensions.')
|
|
;
|
|
}
|
|
|
|
protected function execute(InputInterface $input, OutputInterface $output) : int
|
|
{
|
|
$settings = $this->settings;
|
|
$logger = $this->logger;
|
|
$translator = $this->translator;
|
|
$extmgr = $this->extmgr;
|
|
|
|
$outformat = '%s %-55s %-8s %-10s';
|
|
$descformat = '%-55s';
|
|
$extStyle = new OutputFormatterStyle('green', '', ['bold']);
|
|
$output->getFormatter()->setStyle('ext', $extStyle);
|
|
$descStyle = new OutputFormatterStyle('gray');
|
|
$output->getFormatter()->setStyle('desc', $descStyle);
|
|
|
|
$enabled = 0;
|
|
$disabled = 0;
|
|
$haserror = 0;
|
|
$extconfs = $extmgr->getExtensionConfiguration();
|
|
foreach ($extconfs as $extname=>$extconf) {
|
|
if (!$settings->extensionIsDisabled($extname)) {
|
|
$enabled++;
|
|
$output->writeln(sprintf('<ext>'.$outformat.'</ext>', '*', $extname, $extconf['version'], $extconf['releasedate']));
|
|
} else {
|
|
$disabled++;
|
|
$output->writeln(sprintf('<comment>'.$outformat.'</comment>', '-', $extname, $extconf['version'], $extconf['releasedate']));
|
|
}
|
|
$output->writeln(sprintf(' <desc>'.$descformat.'</desc>', $extconf['title']));
|
|
$lines = explode('|', wordwrap($extconf['description'], 55, '|'));
|
|
foreach($lines as $desc)
|
|
$output->writeln(sprintf(' <desc>'.$descformat.'</desc>', trim($desc)));
|
|
$output->writeln(sprintf(' <desc>'.$descformat.'</desc>', 'Author: '.$extconf['author']['name'].(!empty($extconf['author']['company']) ? ' ('.$extconf['author']['company'].')' : '')));
|
|
$check = $extmgr->checkExtensionByDir($extname);
|
|
$errmsgs = $extmgr->getErrorMsgs();
|
|
if($errmsgs) {
|
|
$haserror++;
|
|
foreach($errmsgs as $errmsg) {
|
|
$output->writeln(sprintf(' <error>'.$descformat.'</error>', trim($errmsg)));
|
|
}
|
|
}
|
|
}
|
|
$output->writeln('');
|
|
$output->writeln(sprintf('%d extensions, %d enabled, %d disabled, %d has errors', $enabled+$disabled, $enabled, $disabled, $haserror));
|
|
return Command::SUCCESS;
|
|
}
|
|
}
|
|
|
|
// vim: ts=4 sw=4 expandtab
|