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