mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-11-28 02:20:41 +00:00
104 lines
3.7 KiB
PHP
104 lines
3.7 KiB
PHP
<?php
|
|
namespace Seeddms\Console\Commands;
|
|
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Helper\TableCell;
|
|
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\Helper\Table;
|
|
use Symfony\Component\Console\Helper\QuestionHelper;
|
|
use Symfony\Component\Console\Question\Question;
|
|
|
|
use Seeddms\Seeddms\Settings;
|
|
use Seeddms\Seeddms\Translator;
|
|
use SeedDMS_Core_File;
|
|
use SeedDMS_View_Common;
|
|
use SeedDMS_Extension_Mgr;
|
|
use Log_file;
|
|
|
|
class RepositoryextensionCommand 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: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("<comment>Using configuration from '".$settings->_configFilePath."'.</comment>", 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("<info>Updated extension list from repository.</info>"));
|
|
// 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[] = '<info>'.$version.'</info>';
|
|
} else {
|
|
$allowedversions[] = '<error>'.$version.'</error>';
|
|
}
|
|
}
|
|
$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("<error>Could not get extension list from repository.</error>"));
|
|
return Command::FAILURE;
|
|
}
|
|
}
|
|
}
|
|
|
|
// vim: ts=4 sw=4 expandtab
|