dataunlocker
Version:
DataUnlocker's command line interface utilities
33 lines (32 loc) • 1.06 kB
JavaScript
import { promises as fs } from 'fs';
import { dirname, join } from 'path';
let dataunlockerJsonFilePath;
const getEnvFromDataUnlockerFile = async (name) => {
if (!dataunlockerJsonFilePath) {
let dir = process.cwd();
while (!(await fs.stat(join(dir, 'package.json')).then(() => true, () => false))) {
const parent = dirname(dir);
if (parent === dir)
return; // reached root
dir = parent;
}
dataunlockerJsonFilePath = join(dir, '.dataunlocker.json');
}
const data = await fs
.readFile(dataunlockerJsonFilePath)
.catch(() => undefined);
if (!data) {
return;
}
try {
const json = JSON.parse(data.toString());
return json[name];
}
catch (e) {
throw new Error(`Can't parse json from ${dataunlockerJsonFilePath}: ` + e);
}
};
export const getEnv = async (name) => process.env[name] ??
process.env[`npm_config_${name.toLowerCase()}`] ??
(await getEnvFromDataUnlockerFile(name)) ??
'';