1 | export function promise(callback) {
|
2 | return new Promise((resolve, reject) => {
|
3 | callback((err, data) => {
|
4 | if (err) {
|
5 | reject(err);
|
6 | }
|
7 | else {
|
8 | resolve(data);
|
9 | }
|
10 | });
|
11 | });
|
12 | }
|
13 |
|
14 | export function streamEnd(input, output) {
|
15 | return new Promise((resolve, reject) => {
|
16 | input.on("error", reject);
|
17 | output.on("error", reject);
|
18 | output.on("close", resolve);
|
19 | });
|
20 | }
|
21 |
|
22 | export function arrayToObject(arr) {
|
23 | const result = { };
|
24 | for (let i = 0, l = arr.length; i < l; i += 2) {
|
25 | result[arr[i]] = arr[i + 1];
|
26 | }
|
27 | return result;
|
28 | }
|
29 |
|
30 | export function envify(value) {
|
31 | if (typeof value !== "string") {
|
32 | throw new Error("Not a string, but " + typeof value);
|
33 | }
|
34 |
|
35 | const complex = value.match(/(\$\{[a-zA-Z_]+[0-9a-zA-Z_]*\})/g);
|
36 | for (const match of complex || []) {
|
37 | const env = match.slice(2, -1);
|
38 | if (process.env.hasOwnProperty(env) === false) {
|
39 | throw new Error(`Missing environment variable ${env}`);
|
40 | }
|
41 | value.split(match).join(process.env[env]);
|
42 | }
|
43 |
|
44 | const simple = value.match(/(\$[a-zA-Z_]+[0-9a-zA-Z_]*)/g);
|
45 | for (const match of simple || []) {
|
46 | const env = match.slice(1);
|
47 | if (process.env.hasOwnProperty(env) === false) {
|
48 | throw new Error(`Missing environment variable ${env}`);
|
49 | }
|
50 | value = value.split(match).join(process.env[env]);
|
51 | }
|
52 |
|
53 | return value;
|
54 | }
|