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