X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FConsole%2FConfig.php;h=efb795360cac7c9ba5c882c7ec3480c256b936aa;hb=40a126306621fe9eadb58101bd19a0be32e4c163;hp=a27ca134987e4bed9946274a727dd9e24c713e62;hpb=c9cce8492e5b2607b2a092474d1de4d188b7a2c9;p=friendica.git diff --git a/src/Console/Config.php b/src/Console/Config.php index a27ca13498..efb795360c 100644 --- a/src/Console/Config.php +++ b/src/Console/Config.php @@ -1,14 +1,33 @@ . + * + */ namespace Friendica\Console; use Asika\SimpleConsole\CommandArgsException; use Friendica\App; -use Friendica\Core; +use Friendica\Core\Config\Capability\IManageConfigValues; use RuntimeException; /** - * @brief tool to access the system config from the CLI + * tool to access the system config from the CLI * * With this script you can access the system configuration of your node from * the CLI. You can do both, reading current values stored in the database and @@ -27,14 +46,20 @@ use RuntimeException; * If you specify three parameters, the named configuration setting will be * set to the value of the last parameter. (e.g. "system loglevel 0" will * disable logging) - * - * @author Tobias Diekershoff - * @author Hypolite Petovan */ class Config extends \Asika\SimpleConsole\Console { protected $helpOptions = ['h', 'help', '?']; + /** + * @var App\Mode + */ + private $appMode; + /** + * @var IManageConfigValues + */ + private $config; + protected function getHelp() { $help = <<appMode = $appMode; + $this->config = $config; + } + + protected function doExecute(): int + { if ($this->getOption('v')) { $this->out('Executable: ' . $this->executable); $this->out('Class: ' . __CLASS__); @@ -84,23 +115,23 @@ HELP; throw new CommandArgsException('Too many arguments'); } - if (!$a->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) { - $this->out('Database isn\'t ready or populated yet, showing file config only'); - } - if (count($this->args) == 3) { $cat = $this->getArgument(0); $key = $this->getArgument(1); $value = $this->getArgument(2); - if (is_array(Core\Config::get($cat, $key))) { + if (is_array($this->config->get($cat, $key))) { throw new RuntimeException("$cat.$key is an array and can't be set using this command."); } - $result = Core\Config::set($cat, $key, $value); + if ($this->config->get($cat, $key) === $value) { + throw new RuntimeException("$cat.$key already set to $value."); + } + + $result = $this->config->set($cat, $key, $value); if ($result) { $this->out("{$cat}.{$key} <= " . - Core\Config::get($cat, $key)); + $this->config->get($cat, $key)); } else { $this->out("Unable to set {$cat}.{$key}"); } @@ -109,24 +140,25 @@ HELP; if (count($this->args) == 2) { $cat = $this->getArgument(0); $key = $this->getArgument(1); - $value = Core\Config::get($this->getArgument(0), $this->getArgument(1)); + $value = $this->config->get($this->getArgument(0), $this->getArgument(1)); if (is_array($value)) { foreach ($value as $k => $v) { $this->out("{$cat}.{$key}[{$k}] => " . (is_array($v) ? implode(', ', $v) : $v)); } } else { - $this->out("{$cat}.{$key} => " . $value); + $this->out("{$cat}.{$key} => " . ($value ?? 'NULL')); } } if (count($this->args) == 1) { $cat = $this->getArgument(0); - Core\Config::load($cat); + $this->config->reload(); + $configCache = $this->config->getCache(); - if ($a->getConfigCache()->get($cat) !== null) { + if ($configCache->get($cat) !== null) { $this->out("[{$cat}]"); - $catVal = $a->getConfigCache()->get($cat); + $catVal = $configCache->get($cat); foreach ($catVal as $key => $value) { if (is_array($value)) { foreach ($value as $k => $v) { @@ -142,13 +174,9 @@ HELP; } if (count($this->args) == 0) { - Core\Config::load(); - - if (Core\Config::get('system', 'config_adapter') == 'jit' && $a->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) { - $this->out('Warning: The JIT (Just In Time) Config adapter doesn\'t support loading the entire configuration, showing file config only'); - } + $this->config->reload(); - $config = $a->getConfigCache()->getAll(); + $config = $this->config->getCache()->getAll(); foreach ($config as $cat => $section) { if (is_array($section)) { foreach ($section as $key => $value) {