->setDescription('Get a system config value')
->addArgument(
'name',
- InputArgument::REQUIRED,
- 'Name of the config to get'
+ InputArgument::REQUIRED | InputArgument::IS_ARRAY,
+ 'Name of the config to get, specify multiple for array parameter'
)
->addOption(
'default-value',
* @return null|int null or 0 if everything went fine, or an error code
*/
protected function execute(InputInterface $input, OutputInterface $output) {
- $configName = $input->getArgument('name');
+ $configNames = $input->getArgument('name');
+ $configName = array_shift($configNames);
$defaultValue = $input->getOption('default-value');
if (!in_array($configName, $this->systemConfig->getKeys()) && !$input->hasParameterOption('--default-value')) {
$configValue = $defaultValue;
} else {
$configValue = $this->systemConfig->getValue($configName);
+ if (!empty($configNames)) {
+ foreach ($configNames as $configName) {
+ if (isset($configValue[$configName])) {
+ $configValue = $configValue[$configName];
+ } else if (!$input->hasParameterOption('--default-value')) {
+ return 1;
+ } else {
+ $configValue = $defaultValue;
+ break;
+ }
+ }
+ }
}
$this->writeMixedInOutputFormat($input, $output, $configValue);
['name', ['a' => 1, 'b' => 2], true, null, false, 'json', 0, json_encode(['a' => 1, 'b' => 2])],
['name', ['a' => 1, 'b' => 2], true, null, false, 'plain', 0, "a: 1\nb: 2"],
+ // Nested depth
+ [['name', 'a'], ['a' => 1, 'b' => 2], true, null, false, 'json', 0, json_encode(1)],
+ [['name', 'a'], ['a' => 1, 'b' => 2], true, null, false, 'plain', 0, '1'],
+ [['name', 'c'], ['a' => 1, 'b' => 2], true, true, true, 'json', 0, json_encode(true)],
+ [['name', 'c'], ['a' => 1, 'b' => 2], true, true, false, 'json', 1, null],
+
];
}
/**
* @dataProvider getData
*
- * @param string $configName
+ * @param string[] $configNames
* @param mixed $value
* @param bool $configExists
* @param mixed $defaultValue
* @param int $expectedReturn
* @param string $expectedMessage
*/
- public function testGet($configName, $value, $configExists, $defaultValue, $hasDefault, $outputFormat, $expectedReturn, $expectedMessage) {
+ public function testGet($configNames, $value, $configExists, $defaultValue, $hasDefault, $outputFormat, $expectedReturn, $expectedMessage) {
+ if (is_array($configNames)) {
+ $configName = $configNames[0];
+ } else {
+ $configName = $configNames;
+ $configNames = [$configName];
+ }
$this->systemConfig->expects($this->atLeastOnce())
->method('getKeys')
->willReturn($configExists ? [$configName] : []);
$this->consoleInput->expects($this->once())
->method('getArgument')
->with('name')
- ->willReturn($configName);
+ ->willReturn($configNames);
$this->consoleInput->expects($this->any())
->method('getOption')
->willReturnMap([