/
index.js
57 lines (52 loc) · 1.3 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const fs = require('fs');
const path = require('path');
const fileName = path.join(process.cwd(), '/.env');
try {
fs.accessSync(fileName, fs.constants.R_OK);
const replaceEscapedChar = (char) => {
switch(char) {
case 't':
return '\t';
case 'v':
return '\v';
case '0':
return '\0';
case 'b':
return '\b';
case 'f':
return '\f';
case 'n':
return '\n';
case 'r':
return '\r';
case '\'':
return '\'';
case '"':
return '\"';
case '\\':
return '\\';
default:
return char;
}
};
const lines = fs.readFileSync(fileName, 'utf-8').split(/(\n|\r)/);
lines.forEach((line) => {
// a line should have at least 3 characters (k=v)
if (line && line.charAt(0) != '#' && line.length > 2) {
const equality = line.indexOf('=');
if (equality !== -1) {
const key = line.substr(0, equality);
const value = line.substr(equality + 1, line.length);
if (!process.env[key]) {
process.env[key] = value.replace(/\\[tv0bfnr'"\\"]/g, str => {
return replaceEscapedChar(str.substr(1, 2));
});
}
}
}
});
} catch (err) {
if (process.env.LIGHTENV_DEBUG) {
console.warn(err.message);
}
}