Skip to content

Commit 34d8e2b

Browse files
committedJan 9, 2020
feat(loader): resolve ref late so future values are interpolated
1 parent 7dde0e3 commit 34d8e2b

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed
 

‎src/Loader.php

+21-12
Original file line numberDiff line numberDiff line change
@@ -86,23 +86,32 @@ protected function setEnv(array $vars, $override, $mode = self::PUTENV)
8686
continue;
8787
}
8888

89-
$value = $this->resolveRef($value);
90-
91-
$this->toEnv($key, $value, $mode);
92-
$this->toServer($key, $value, $mode);
93-
$this->toPutenv($key, $value, $mode);
89+
$this->set($key, $value, $mode);
9490
}
91+
92+
$this->resolveRefs($vars, $mode);
9593
}
9694

97-
protected function resolveRef($value)
95+
protected function set($key, $value, $mode)
9896
{
99-
if (!$value || \strpos($value, '${') === false) {
100-
return $value;
101-
}
97+
$this->toEnv($key, $value, $mode);
98+
$this->toServer($key, $value, $mode);
99+
$this->toPutenv($key, $value, $mode);
100+
}
102101

103-
return \preg_replace_callback('~\$\{(\w+)\}~', function ($m) {
104-
return (null === $ref = Retriever::getEnv($m[1], null)) ? $m[0] : $ref;
105-
}, $value);
102+
protected function resolveRefs($vars, $mode)
103+
{
104+
foreach ($vars as $key => $value) {
105+
if (!$value || \strpos($value, '${') === false) {
106+
continue;
107+
}
108+
109+
$value = \preg_replace_callback('~\$\{(\w+)\}~', function ($m) {
110+
return (null === $ref = Retriever::getEnv($m[1], null)) ? $m[0] : $ref;
111+
}, $value);
112+
113+
$this->set($key, $value, $mode);
114+
}
106115
}
107116

108117
private function toEnv($key, $value, $mode)

0 commit comments

Comments
 (0)