Skip to content

Commit 29946b3

Browse files
committed
Cleanup on Special Key lookup.
1 parent c8f681e commit 29946b3

2 files changed

Lines changed: 11 additions & 9 deletions

File tree

src/Shell/ConfigReadShell.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,8 @@ protected function simpleFetchAndPrint() {
171171
* @return mixed The value as obtained from proper fetcher method.
172172
*/
173173
protected function fetchVal($key) {
174-
if ($special = $this->specialKey($key)) {
174+
$special = $this->specialKey($key);
175+
if ($special) {
175176
return $this->fetchSpecial($special);
176177
} else {
177178
return $this->configRead($key);
@@ -238,6 +239,7 @@ protected function specialKey($search) {
238239
if (!$callable) {
239240
return false;
240241
}
242+
241243
$special = [
242244
'callable' => $callable,
243245
];
@@ -246,6 +248,7 @@ protected function specialKey($search) {
246248
if (isset($keyParts[1])) {
247249
$special['arg'] = $keyParts[1];
248250
}
251+
249252
if (isset($keyParts[2])) {
250253
$special['subkey'] = $keyParts[2];
251254
}
@@ -278,24 +281,23 @@ protected function fetchSpecial($special) {
278281
if (isset($special['arg'])) {
279282
$set = call_user_func($special['callable'], $special['arg']);
280283
} else {
281-
$allConfigCallable = str_replace(
282-
'::config',
284+
$allConfigCallable = preg_replace(
285+
'/::config$/',
283286
'::configured',
284287
$special['callable'],
288+
-1,
285289
$replaceCount
286290
);
287-
debug($allConfigCallable);
288-
debug($replaceCount);
289291

290-
$set = [];
291-
if($replaceCount && is_callable($allConfigCallable)) {
292+
$set = null;
293+
if ($replaceCount && is_callable($allConfigCallable)) {
292294
foreach (call_user_func($allConfigCallable) as $configName) {
293295
$set[$configName] = call_user_func($special['callable'], $configName);
294296
}
295297
}
296298
}
297299

298-
if (isset($special['subkey'])) {
300+
if (isset($special['subkey']) && is_array($set)) {
299301
return Hash::get($set, $special['subkey']);
300302
} else {
301303
return $set;

tests/TestCase/Shell/ConfigReadShellTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ public static function tearDownAfterClass() {
103103
foreach (self::$datasources as $ds => $configs) {
104104
\Cake\Datasource\ConnectionManager::drop($ds);
105105
}
106+
106107
\Cake\Utility\Security::salt('');
107108
}
108109

@@ -493,7 +494,6 @@ public function provideSerializedArgs() {
493494
* @dataProvider provideSpecialKeyArgs
494495
*/
495496
public function testMainSpecialKeys($args, $expected, $msg = '') {
496-
497497
$this->Shell->params['serialize'] = true; // Makes comparing output easier.
498498
$this->Shell->args = $args;
499499

0 commit comments

Comments
 (0)