diff --git a/src/Module/Config/Step/OverrideConfigFromCLI.php b/src/Module/Config/Step/OverrideConfigFromCLI.php index 062ba41d..dc424591 100644 --- a/src/Module/Config/Step/OverrideConfigFromCLI.php +++ b/src/Module/Config/Step/OverrideConfigFromCLI.php @@ -33,10 +33,16 @@ public function __invoke(Project $project): void $cliConfig = []; /** @var string $item */ foreach ($project->metadata['cliConfig'] as $item) { - $explosion = explode('=', $item, 2); - $this->logger->notice('Overriding global config: '.$explosion[0].' = "'.$explosion[1].'"'); + $setting = explode('=', $item, 2); + $this->logger->notice('Overriding global config: '.$setting[0].' = "'.$setting[1].'"'); - $cliConfig[$explosion[0]] = $explosion[1]; + $settingKey = explode('.', $setting[0]); + $settingValue = $setting[1]; + foreach (array_reverse($settingKey) as $valueAsKey) { + $settingValue = [$valueAsKey => $settingValue]; + } + + $cliConfig = array_merge($cliConfig, $settingValue); } unset($project->metadata['cliConfig']); diff --git a/tests/UnitTest/Module/Config/Step/OverrideConfigFromCLITest.php b/tests/UnitTest/Module/Config/Step/OverrideConfigFromCLITest.php index 4640131a..fc52eaca 100644 --- a/tests/UnitTest/Module/Config/Step/OverrideConfigFromCLITest.php +++ b/tests/UnitTest/Module/Config/Step/OverrideConfigFromCLITest.php @@ -60,4 +60,22 @@ public function should_not_override_title_if_no_cliConfig() $this->assertEquals('foo', $project->metadata['title']); } + + /** + * @test + */ + public function should_override_template_url() + { + $project = new MockProject(); + $project->metadata['title'] = 'foo'; + $project->metadata['template'] = ['url' => 'https://github.com/template.git']; + $project->metadata['cliConfig'] = ['template.url=https://gitlab.com/template.git']; + $logger = $this->createMock("Psr\Log\LoggerInterface"); + $step = new OverrideConfigFromCLI($logger); + + $step->__invoke($project); + + $this->assertEquals('foo', $project->metadata['title']); + $this->assertEquals('https://gitlab.com/template.git', $project->metadata['template']['url']); + } }