settings = $settings;
$this->logger = $logger;
$this->translator = $translator;
$this->extmgr = $extmgr;
parent::__construct();
}
protected function configure()
{
$this->setName('ext:repository')
->setDescription('Get list of extensions from repository')
->setHelp('')
->addOption('url', '', InputOption::VALUE_REQUIRED, 'Url of repository.', null)
;
}
protected function execute(InputInterface $input, OutputInterface $output) : int
{
$settings = $this->settings;
$logger = $this->logger;
$translator = $this->translator;
$extmgr = $this->extmgr;
$output->writeln("Using configuration from '".$settings->_configFilePath."'.", OutputInterface::VERBOSITY_VERBOSE);
$reposurl = $input->getOption('url');
if($reposurl)
$extmgr->setRepositoryUrl($reposurl);
/* Get a list of available extensions from the repository */
if($ret = $extmgr->updateExtensionList('', true)) {
// $output->writeln(sprintf("Updated extension list from repository."));
// list of installed extensions
$extconfs = $extmgr->getExtensionConfiguration();
// list of extensions in repository, this will just return the
// latest version of an extension
$list = $extmgr->getExtensionList();
// print_r($list);
$tabledata = [];
foreach($list as $extname=>$data) {
$extversions = $extmgr->getExtensionListByName($extname);
// print_r($extversions);
$allowedversions = [];
foreach($extversions as $version=>$extversion) {
$check = $extmgr->checkExtensionByName($extname, $extversion);
if ($check) {
$allowedversions[] = ''.$version.'';
} else {
$allowedversions[] = ''.$version.'';
}
}
$tabledata[$extname] = [
$extname,
$data['title'],
new TableCell(implode("\n", $allowedversions), ['rowspan' => count($allowedversions)]),
isset($extconfs[$extname]['version']) ? $extconfs[$extname]['version'] : ''];
}
$table = new Table($output);
$table
->setHeaders(['Name', 'Title', 'Rep. ver.', 'Inst. ver.'])
->setRows($tabledata);
$table->render();
return Command::SUCCESS;
} else {
$output->writeln(sprintf("Could not get extension list from repository."));
return Command::FAILURE;
}
}
}
// vim: ts=4 sw=4 expandtab