Allow the config command to read out values if no new value is provided
parent
24963fb4c8
commit
0d506228d6
|
@ -151,7 +151,8 @@ EOT
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (!$input->getArgument('setting-key')) {
|
||||
$settingKey = $input->getArgument('setting-key');
|
||||
if (!$settingKey) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -159,14 +160,56 @@ EOT
|
|||
if (array() !== $input->getArgument('setting-value') && $input->getOption('unset')) {
|
||||
throw new \RuntimeException('You can not combine a setting value with --unset');
|
||||
}
|
||||
|
||||
// list value
|
||||
if (array() === $input->getArgument('setting-value') && !$input->getOption('unset')) {
|
||||
throw new \RuntimeException('You must include a setting value or pass --unset to clear the value');
|
||||
$data = $this->configFile->read();
|
||||
if (preg_match('/^repos?(?:itories)?(?:\.(.+))?/', $settingKey, $matches)) {
|
||||
if (empty($matches[1])) {
|
||||
$value = isset($data['repositories']) ? $data['repositories'] : array();
|
||||
} else {
|
||||
if (!isset($data['repositories'][$matches[1]])) {
|
||||
throw new \InvalidArgumentException('There is no '.$matches[1].' repository defined');
|
||||
}
|
||||
|
||||
$value = $data['repositories'][$matches[1]];
|
||||
}
|
||||
} elseif (strpos($settingKey, '.')) {
|
||||
$bits = explode('.', $settingKey);
|
||||
$data = $data['config'];
|
||||
foreach ($bits as $bit) {
|
||||
if (isset($data[$bit])) {
|
||||
$data = $data[$bit];
|
||||
} elseif (isset($data[implode('.', $bits)])) {
|
||||
// last bit can contain domain names and such so try to join whatever is left if it exists
|
||||
$data = $data[implode('.', $bits)];
|
||||
break;
|
||||
} else {
|
||||
throw new \RuntimeException($settingKey.' is not defined');
|
||||
}
|
||||
array_shift($bits);
|
||||
}
|
||||
|
||||
$value = $data;
|
||||
} elseif (isset($data['config'][$settingKey])) {
|
||||
$value = $data['config'][$settingKey];
|
||||
} else {
|
||||
throw new \RuntimeException($settingKey.' is not defined');
|
||||
}
|
||||
|
||||
if (is_array($value)) {
|
||||
$value = json_encode($value);
|
||||
}
|
||||
|
||||
$output->writeln($value);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
$values = $input->getArgument('setting-value'); // what the user is trying to add/change
|
||||
|
||||
// handle repositories
|
||||
if (preg_match('/^repos?(?:itories)?\.(.+)/', $input->getArgument('setting-key'), $matches)) {
|
||||
if (preg_match('/^repos?(?:itories)?\.(.+)/', $settingKey, $matches)) {
|
||||
if ($input->getOption('unset')) {
|
||||
return $this->configSource->removeRepository($matches[1]);
|
||||
}
|
||||
|
@ -214,7 +257,6 @@ EOT
|
|||
),
|
||||
);
|
||||
|
||||
$settingKey = $input->getArgument('setting-key');
|
||||
foreach ($uniqueConfigValues as $name => $callbacks) {
|
||||
if ($settingKey === $name) {
|
||||
if ($input->getOption('unset')) {
|
||||
|
|
Loading…
Reference in New Issue