summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2015-04-30 15:57:22 +0200
committerJoas Schilling <nickvergessen@owncloud.com>2015-07-07 11:18:24 +0200
commit6763637773f5b9f2993f65427be21ee04f192ea1 (patch)
treeb191ba23def30b2337ea095e11ada0137f425be1 /core
parent6fb3a8d5f5a290208b116fa0b589d9b7d691bdd7 (diff)
downloadnextcloud-server-6763637773f5b9f2993f65427be21ee04f192ea1.tar.gz
nextcloud-server-6763637773f5b9f2993f65427be21ee04f192ea1.zip
Add a command to list existing configs
Diffstat (limited to 'core')
-rw-r--r--core/command/config/listconfigs.php103
-rw-r--r--core/register_command.php2
2 files changed, 105 insertions, 0 deletions
diff --git a/core/command/config/listconfigs.php b/core/command/config/listconfigs.php
new file mode 100644
index 00000000000..d25495a55d1
--- /dev/null
+++ b/core/command/config/listconfigs.php
@@ -0,0 +1,103 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @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 <http://www.gnu.org/licenses/>
+ *
+ */
+
+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 925d3d8ade1..b4c3576bb4d 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()));