[Dotenv] support setting default env var values

This commit is contained in:
Christian Flothmann 2019-08-06 10:48:05 +02:00 committed by Nicolas Grekas
parent 0094884b17
commit 2dd41e7f24
2 changed files with 9 additions and 1 deletions

View File

@ -432,7 +432,7 @@ final class Dotenv
(?!\() # no opening parenthesis
(?P<opening_brace>\{)? # optional brace
(?P<name>'.self::VARNAME_REGEX.')? # var name
(?P<default_value>:-[^\}]++)? # optional default value
(?P<default_value>:[-=][^\}]++)? # optional default value
(?P<closing_brace>\})? # optional closing brace
/x';
@ -469,6 +469,10 @@ final class Dotenv
}
$value = substr($matches['default_value'], 2);
if ('=' === $matches['default_value'][1]) {
$this->values[$name] = $value;
}
}
if (!$matches['opening_brace'] && isset($matches['closing_brace'])) {

View File

@ -166,6 +166,10 @@ class DotenvTest extends TestCase
["FOO=BAR\nBAR=\${NOTDEFINED:-TEST}", ['FOO' => 'BAR', 'BAR' => 'TEST']],
["FOO=\nBAR=\${FOO:-TEST}", ['FOO' => '', 'BAR' => 'TEST']],
["FOO=\nBAR=\$FOO:-TEST}", ['FOO' => '', 'BAR' => 'TEST}']],
["FOO=BAR\nBAR=\${FOO:=TEST}", ['FOO' => 'BAR', 'BAR' => 'BAR']],
["FOO=BAR\nBAR=\${NOTDEFINED:=TEST}", ['FOO' => 'BAR', 'NOTDEFINED' => 'TEST', 'BAR' => 'TEST']],
["FOO=\nBAR=\${FOO:=TEST}", ['FOO' => 'TEST', 'BAR' => 'TEST']],
["FOO=\nBAR=\$FOO:=TEST}", ['FOO' => 'TEST', 'BAR' => 'TEST}']],
];
if ('\\' !== \DIRECTORY_SEPARATOR) {