From cbf28cc1b0cac879fa398f582ca13900d6acf7ba Mon Sep 17 00:00:00 2001 From: Georg Grossberger Date: Fri, 27 Nov 2015 13:11:01 +0100 Subject: [PATCH] Use environment variables for changeing deployment and releases settings This makes the deployment configurations more flexible and easier to reuse. --- Mage/Config.php | 14 +++++++++++ tests/MageTest/ConfigTest.php | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 tests/MageTest/ConfigTest.php diff --git a/Mage/Config.php b/Mage/Config.php index 3f70f6c..9eed045 100644 --- a/Mage/Config.php +++ b/Mage/Config.php @@ -450,6 +450,13 @@ class Config */ public function deployment($option, $default = false) { + // Environment variable override + $envValue = getenv('MAGE_DEPLOYMENT_' . strtoupper($option)); + + if ($envValue !== false) { + return $envValue; + } + // Host Config if (is_array($this->hostConfig) && isset($this->hostConfig['deployment'])) { if (isset($this->hostConfig['deployment'][$option])) { @@ -484,6 +491,13 @@ class Config */ public function release($option, $default = false) { + // Environment variable override + $envValue = getenv('MAGE_RELEASE_' . strtoupper($option)); + + if ($envValue !== false) { + return $envValue; + } + // Host Config if (is_array($this->hostConfig) && isset($this->hostConfig['releases'])) { if (isset($this->hostConfig['releases'][$option])) { diff --git a/tests/MageTest/ConfigTest.php b/tests/MageTest/ConfigTest.php new file mode 100644 index 0000000..05649b3 --- /dev/null +++ b/tests/MageTest/ConfigTest.php @@ -0,0 +1,46 @@ +deployment('a', 'b'); + + $this->assertSame($expected, $actual); + + putenv('MAGE_DEPLOYMENT_A=c'); + + $expected = 'c'; + $actual = $config->deployment('a', 'b'); + + $this->assertSame($expected, $actual); + } + + public function testOverrideReleaseOptionWithEnvironemntVariable() + { + $config = new Config(); + + $expected = 'b'; + $actual = $config->release('a', 'b'); + + $this->assertSame($expected, $actual); + + putenv('MAGE_RELEASE_A=c'); + + $expected = 'c'; + $actual = $config->release('a', 'b'); + + $this->assertSame($expected, $actual); + } +}