From 6763637773f5b9f2993f65427be21ee04f192ea1 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 30 Apr 2015 15:57:22 +0200 Subject: [PATCH] Add a command to list existing configs --- core/command/config/listconfigs.php | 103 ++++++++++++++++++++++++++++ core/register_command.php | 2 + 2 files changed, 105 insertions(+) create mode 100644 core/command/config/listconfigs.php diff --git a/core/command/config/listconfigs.php b/core/command/config/listconfigs.php new file mode 100644 index 0000000000..d25495a55d --- /dev/null +++ b/core/command/config/listconfigs.php @@ -0,0 +1,103 @@ + + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see + * + */ + +namespace OC\Core\Command\Config; + +use OC\Core\Command\Base; +use OC\SystemConfig; +use OCP\IAppConfig; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class ListConfigs extends Base { + /** * @var SystemConfig */ + protected $systemConfig; + + /** @var IAppConfig */ + protected $appConfig; + + /** + * @param SystemConfig $systemConfig + * @param IAppConfig $appConfig + */ + public function __construct(SystemConfig $systemConfig, IAppConfig $appConfig) { + parent::__construct(); + $this->systemConfig = $systemConfig; + $this->appConfig = $appConfig; + } + + protected function configure() { + parent::configure(); + + $this + ->setName('config:list') + ->setDescription('List all configs') + ->addArgument( + 'app', + InputArgument::OPTIONAL, + 'Name of the app ("system" to get the config.php values, "all" for all apps and system)', + 'system' + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $app = $input->getArgument('app'); + switch ($app) { + case 'system': + $configs = $this->getSystemConfigs(); + break; + + case 'all': + $apps = $this->appConfig->getApps(); + $configs = []; + foreach ($apps as $appName) { + $configs[$appName] = $this->appConfig->getValues($appName, false); + } + $configs['system'] = $this->getSystemConfigs(); + break; + + default: + $configs = $this->appConfig->getValues($app, false); + } + + $this->writeArrayInOutputFormat($input, $output, $configs); + } + + /** + * Get the system configs + * @return array + */ + protected function getSystemConfigs() { + $keys = $this->systemConfig->getKeys(); + + $configs = []; + foreach ($keys as $key) { + $value = $this->systemConfig->getValue($key, new \Exception('Not set')); + if (!($value instanceof \Exception)) { + $configs[$key] = $value; + } + } + + return $configs; + } +} diff --git a/core/register_command.php b/core/register_command.php index 925d3d8ade..b4c3576bb4 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -40,6 +40,8 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) { $application->add(new OC\Core\Command\Background\WebCron(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Background\Ajax(\OC::$server->getConfig())); + $application->add(new OC\Core\Command\Config\ListConfigs(\OC::$server->getSystemConfig(), \OC::$server->getAppConfig())); + $application->add(new OC\Core\Command\Db\GenerateChangeScript()); $application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), new \OC\DB\ConnectionFactory()));