Skip to content

Commit 690fa43

Browse files
author
pluris
committed
fixup! src: add support for escaping quotes with escape slash in --env-file
1 parent 09f8165 commit 690fa43

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

src/node_dotenv.cc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,11 @@ void Dotenv::SetEnvironment(node::Environment* env) {
5252
auto existing = env->env_vars()->Get(key.data());
5353

5454
if (existing.IsNothing()) {
55-
// Remove all '\' characters from value
56-
value.erase(std::remove(value.begin(), value.end(), '\\'), value.end());
55+
size_t found = value.find("\\\"");
56+
while (found != std::string::npos) {
57+
value.replace(found, 2, "\"");
58+
found = value.find("\\\"", found + 1);
59+
}
5760
env->env_vars()->Set(
5861
isolate,
5962
v8::String::NewFromUtf8(

test/fixtures/dotenv/valid.env

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ EQUAL_SIGNS=equals==
3030
RETAIN_INNER_QUOTES={"foo": "bar"}
3131
RETAIN_INNER_QUOTES_AS_STRING='{"foo": "bar"}'
3232
RETAIN_INNER_QUOTES_AS_BACKTICKS=`{"foo": "bar's"}`
33-
RETAIN_INNER_QUOTES_AS_ESCAPE_SLASH=`{\"foo\": \"bar\"}`
33+
RETAIN_INNER_QUOTES_AS_ESCAPE_SLASH="{\"foo\": \"bar\"}"
3434
TRIM_SPACE_FROM_UNQUOTED= some spaced out string
3535
EMAIL=therealnerdybeast@example.tld
3636
SPACED_KEY = parsed
37+
PATH_WINDOWS=C:\\Windows\\system32

test/parallel/test-dotenv.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,5 @@ assert.strictEqual(process.env.TRIM_SPACE_FROM_UNQUOTED, 'some spaced out string
6969
assert.strictEqual(process.env.EMAIL, 'therealnerdybeast@example.tld');
7070
// Parses keys and values surrounded by spaces
7171
assert.strictEqual(process.env.SPACED_KEY, 'parsed');
72+
// Parses windows path
73+
assert.strictEqual(process.env.PATH_WINDOWS, 'C:\\\\Windows\\\\system32');

0 commit comments

Comments
 (0)