diff --git a/lib/parse-args.js b/lib/parse-args.js index 1e76335..3d029be 100644 --- a/lib/parse-args.js +++ b/lib/parse-args.js @@ -20,17 +20,29 @@ function parseArgs(args) { const command = program.args[0]; const commandArgs = program.args.slice(1); const noOverride = !program.override; + let rc; + if (program.environments && program.environments.length) { + rc = rc || {}; + rc.environments = program.environments; + } + if (program.rcFile) { + rc = rc || {}; + rc.filePath = program.rcFile; + } + let envFile; + if (program.file) { + envFile = envFile || {}; + envFile.filePath = program.file; + } + if (program.fallback != null) { + envFile = envFile || {}; + envFile.fallback = program.fallback; + } return { command, commandArgs, - envFile: { - filePath: program.file, - fallback: program.fallback - }, - rc: { - environments: program.environments, - filePath: program.rcFile - }, + envFile, + rc, options: { noOverride } diff --git a/lib/parse-env-file.js b/lib/parse-env-file.js index a1dc986..3423dc5 100644 --- a/lib/parse-env-file.js +++ b/lib/parse-env-file.js @@ -60,7 +60,9 @@ function parseEnvVars(envString) { const key = match[2].trim(); const value = match[3].trim() || ''; // remove any surrounding quotes - matches[key] = value.replace(/(^['"]|['"]$)/g, ''); + matches[key] = value + .replace(/(^['"]|['"]$)/g, '') + .replace(`\\n`, `\n`); } return matches; } diff --git a/lib/parse-rc-file.js b/lib/parse-rc-file.js index c8e4181..56e1c7c 100644 --- a/lib/parse-rc-file.js +++ b/lib/parse-rc-file.js @@ -30,7 +30,8 @@ function getRCFileVars({ environments, filePath }) { const ext = path_1.extname(absolutePath).toLowerCase(); let parsedData; if (ext === '.json' || ext === '.js') { - parsedData = require(absolutePath); + const possiblePromise = require(absolutePath); /* eslint-disable-line */ + parsedData = utils_1.isPromise(possiblePromise) ? yield possiblePromise : possiblePromise; } else { const file = yield readFileAsync(absolutePath, { encoding: 'utf8' }); diff --git a/lib/signal-termination.js b/lib/signal-termination.js index 530d91a..0ee320b 100644 --- a/lib/signal-termination.js +++ b/lib/signal-termination.js @@ -42,10 +42,10 @@ class TermSignals { * Terminate parent process helper */ _terminateProcess(code, signal) { - if (signal !== undefined) { + if (signal != null) { return process.kill(process.pid, signal); } - if (code !== undefined) { + if (code != null) { return process.exit(code); } throw new Error('Unable to terminate parent process successfully'); diff --git a/src/parse-args.ts b/src/parse-args.ts index d582139..a527674 100644 --- a/src/parse-args.ts +++ b/src/parse-args.ts @@ -21,17 +21,32 @@ export function parseArgs (args: string[]): EnvCmdOptions { const command = program.args[0] const commandArgs = program.args.slice(1) const noOverride = !program.override + + let rc: any + if (program.environments && program.environments.length) { + rc = rc || {} + rc.environments = program.environments + } + if (program.rcFile) { + rc = rc || {} + rc.filePath = program.rcFile + } + + let envFile: any + if (program.file) { + envFile = envFile || {} + envFile.filePath = program.file + } + if (program.fallback != null) { + envFile = envFile || {} + envFile.fallback = program.fallback + } + return { command, commandArgs, - envFile: { - filePath: program.file, - fallback: program.fallback - }, - rc: { - environments: program.environments, - filePath: program.rcFile - }, + envFile, + rc, options: { noOverride } diff --git a/src/signal-termination.ts b/src/signal-termination.ts index 0bbcd66..8a8c7d6 100644 --- a/src/signal-termination.ts +++ b/src/signal-termination.ts @@ -45,10 +45,10 @@ export class TermSignals { * Terminate parent process helper */ public _terminateProcess (code?: number, signal?: string): void { - if (signal !== undefined) { + if (signal != null) { return process.kill(process.pid, signal) } - if (code !== undefined) { + if (code != null) { return process.exit(code) } throw new Error('Unable to terminate parent process successfully')