arg-env
Version:
Node.js package to work with `.env` files in the same way as docker and docker-compose via `--env-file` or `"env_file"` in package.json
50 lines (49 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromPackageEnv = exports.fromArgs = void 0;
var argStart = 2, argPrefix = "--env-file=", argPrefixLength = argPrefix["length"], packagePrefix = "npm_package_config_env_file";
/**
* @see https://github.com/npm/cli/issues/3775
* @see https://github.com/npm/run-script/issues/37
*/
var npm7delimiter = "\n\n";
function fromArgs(argv, deleteThem) {
var length = argv.length, collected = [], indexesToDelete = deleteThem ? [] : undefined;
for (var i = argStart; i < length; i++) {
var arg = argv[i];
if (!arg.startsWith(argPrefix))
continue;
collected.push(arg.substr(argPrefixLength));
deleteThem && indexesToDelete.push(i);
}
var lengthToDelete = indexesToDelete === null || indexesToDelete === void 0 ? void 0 : indexesToDelete.length;
if (lengthToDelete) {
var deleteIndex = 0, curIndex = indexesToDelete[0];
for (var preIndex = curIndex; preIndex < length; preIndex++) {
while (preIndex === indexesToDelete[deleteIndex]) {
preIndex++;
deleteIndex++;
}
argv[curIndex] = argv[preIndex];
curIndex++;
}
argv.length -= lengthToDelete;
}
return collected;
}
exports.fromArgs = fromArgs;
/**
* @todo Consider calculation as in compose.yml
*/
function fromPackageEnv(env) {
var _a, _b;
var collected = (_b = (_a = env[packagePrefix]) === null || _a === void 0 ? void 0 : _a.split(npm7delimiter)) !== null && _b !== void 0 ? _b : [];
var i = 0, key = packagePrefix + "_" + i;
while (key in env) {
collected[i] = env[key];
i++;
key = packagePrefix + "_" + i;
}
return collected;
}
exports.fromPackageEnv = fromPackageEnv;