UNPKG

read-conf

Version:
89 lines (86 loc) 2.57 kB
var importCwd; importCwd = null; module.exports = ({read, position}) => { read.hookIn(position.init, async(noop, o) => { var conf, ext, exts, files, folder, folders, i, j, len, len1, pathExists, readdir, resolve, tmp; ({resolve} = o.path); if (o.filename == null) { if (o.name == null) { if (o.required !== false) { throw new Error("read-conf: no name or filename for config was given"); } } ({readdir, pathExists} = o.fs); folders = o.folders || [process.cwd()]; if (!Array.isArray(folders)) { folders = [folders]; } exts = o.extensions || ["js", "coffee", "ts", "json"]; for (i = 0, len = folders.length; i < len; i++) { folder = folders[i]; folder = resolve(folder); if ((await pathExists(folder))) { files = (await readdir(folder)); for (j = 0, len1 = exts.length; j < len1; j++) { ext = exts[j]; if (~files.indexOf(tmp = `${o.name}.${ext}`)) { conf = tmp; break; } } if (conf) { break; } } } if (conf) { return o.filename = resolve(folder, conf); } } else { return o.filename = resolve(o.filename); } }); read.hookIn(position.before, (noop, o) => { var stat; if (o.filename != null) { ({stat} = o.fs); return stat(o.filename).then((stats) => { return o.mtime = stats.mtimeMs; }).catch(() => { if (o.name == null) { o.name = o.filename; } return o.filename = null; }).then(() => { if (o.filename && (importCwd == null)) { importCwd = require("import-cwd"); importCwd.silent("coffee-script/register"); importCwd.silent("coffeescript/register"); importCwd.silent("ts-node/register"); return importCwd.silent("babel-register"); } }); } }); return read.hookIn((noop, o) => { var conf, e; if (o.filename != null) { try { conf = require(o.filename); } catch (error) { e = error; if (e.code === "MODULE_NOT_FOUND") { if (o.required !== false) { throw new Error(`read-conf: couldn't require '${confPath}'`); } } else { throw e; } } } else if (o.required !== false) { throw new Error(`read-conf: no file '${o.name}' found`); } o.raw = conf || {}; return o.hash = o.util.hash(o.raw); }); };