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(''.$outformat.'', '*', $extname, $extconf['version'], $extconf['releasedate']));
} else {
$disabled++;
$output->writeln(sprintf(''.$outformat.'', '-', $extname, $extconf['version'], $extconf['releasedate']));
}
$output->writeln(sprintf(' '.$descformat.'', $extconf['title']));
$lines = explode('|', wordwrap($extconf['description'], 55, '|'));
foreach($lines as $desc)
$output->writeln(sprintf(' '.$descformat.'', trim($desc)));
$output->writeln(sprintf(' '.$descformat.'', '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(' '.$descformat.'', 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