diff --git a/Processor.php b/Processor.php index 1b960bd..0763dd9 100644 --- a/Processor.php +++ b/Processor.php @@ -22,6 +22,7 @@ public function processFile(array $config) $realFile = $config['file']; $parameterKey = $config['parameter-key']; + $noParameterKey = $config['no-parameter-key']; $exists = is_file($realFile); @@ -32,17 +33,26 @@ public function processFile(array $config) // Find the expected params $expectedValues = $yamlParser->parse(file_get_contents($config['dist-file'])); - if (!isset($expectedValues[$parameterKey])) { - throw new \InvalidArgumentException('The dist file seems invalid.'); + if ($noParameterKey) { + $expectedParams = (array) $expectedValues; + } else { + if (!isset($expectedValues[$parameterKey])) { + throw new \InvalidArgumentException('The dist file seems invalid.'); + } + $expectedParams = (array) $expectedValues[$parameterKey]; } - $expectedParams = (array) $expectedValues[$parameterKey]; // find the actual params - $actualValues = array_merge( - // Preserve other top-level keys than `$parameterKey` in the file - $expectedValues, - array($parameterKey => array()) - ); + if ($noParameterKey) { + $actualValues = array(); + } else { + $actualValues = array_merge( + // Preserve other top-level keys than `$parameterKey` in the file + $expectedValues, + array($parameterKey => array()) + ); + } + if ($exists) { $existingValues = $yamlParser->parse(file_get_contents($realFile)); if ($existingValues === null) { @@ -54,7 +64,11 @@ public function processFile(array $config) $actualValues = array_merge($actualValues, $existingValues); } - $actualValues[$parameterKey] = $this->processParams($config, $expectedParams, (array) $actualValues[$parameterKey]); + if ($noParameterKey) { + $actualValues = $this->processParams($config, $expectedParams, (array) $actualValues); + } else { + $actualValues[$parameterKey] = $this->processParams($config, $expectedParams, (array) $actualValues[$parameterKey]); + } if (!is_dir($dir = dirname($realFile))) { mkdir($dir, 0755, true); @@ -81,6 +95,10 @@ private function processConfig(array $config) $config['parameter-key'] = 'parameters'; } + if (empty($config['no-parameter-key'])) { + $config['no-parameter-key'] = false; + } + return $config; } diff --git a/Tests/fixtures/testcases/no_parameter_key/dist.yml b/Tests/fixtures/testcases/no_parameter_key/dist.yml new file mode 100644 index 0000000..4147cb9 --- /dev/null +++ b/Tests/fixtures/testcases/no_parameter_key/dist.yml @@ -0,0 +1,2 @@ +foo: bar +boolean: false diff --git a/Tests/fixtures/testcases/no_parameter_key/existing.yml b/Tests/fixtures/testcases/no_parameter_key/existing.yml new file mode 100644 index 0000000..6d51ab1 --- /dev/null +++ b/Tests/fixtures/testcases/no_parameter_key/existing.yml @@ -0,0 +1,2 @@ +# This file is auto-generated during the composer install +foo: existing_foo diff --git a/Tests/fixtures/testcases/no_parameter_key/expected.yml b/Tests/fixtures/testcases/no_parameter_key/expected.yml new file mode 100644 index 0000000..7544803 --- /dev/null +++ b/Tests/fixtures/testcases/no_parameter_key/expected.yml @@ -0,0 +1,3 @@ +# This file is auto-generated during the composer install +foo: existing_foo +boolean: false diff --git a/Tests/fixtures/testcases/no_parameter_key/setup.yml b/Tests/fixtures/testcases/no_parameter_key/setup.yml new file mode 100644 index 0000000..b362378 --- /dev/null +++ b/Tests/fixtures/testcases/no_parameter_key/setup.yml @@ -0,0 +1,4 @@ +title: "When 'no-parameter-key' config is set to true, top level keys are used as parameters" + +config: + no-parameter-key: true