read-conf
Version:
reads a config file
86 lines (75 loc) • 2.31 kB
JavaScript
var arg, args, getSchemaFile, i, importCwd, j, len, resolve, schemaFile;
args = process.argv.slice(2);
for (i = j = 0, len = args.length; j < len; i = ++j) {
arg = args[i];
arg = args[i];
if (arg[0] === "-") {
switch (arg) {
case '-h':
case "--help":
console.log('usage: toDoc (schema file)');
console.log('');
console.log('schema file is optional and defaults to "configSchema.[js|json|coffee|ts]"');
console.log('in "src/", "lib/", "/"');
process.exit();
}
} else {
schemaFile = arg;
}
}
importCwd = require("import-cwd");
importCwd.silent("coffee-script/register");
importCwd.silent("coffeescript/register");
importCwd.silent("ts-node/register");
importCwd.silent("babel-register");
({resolve} = require("path"));
if (!schemaFile) {
getSchemaFile = (async() => {
var ext, exts, files, folder, folders, k, l, len1, len2, pathExists, readdir, results, stat, tmp;
({stat, readdir, pathExists} = require("fs-extra"));
folders = ["./src", "./lib", process.cwd()];
exts = ["js", "coffee", "ts", "json"];
results = [];
for (k = 0, len1 = folders.length; k < len1; k++) {
folder = folders[k];
folder = resolve(folder);
if ((await pathExists(folder))) {
files = (await readdir(folder));
for (l = 0, len2 = exts.length; l < len2; l++) {
ext = exts[l];
if (~files.indexOf(tmp = `configSchema.${ext}`)) {
schemaFile = resolve(folder, tmp);
break;
}
}
if (schemaFile) {
break;
} else {
results.push(void 0);
}
} else {
results.push(void 0);
}
}
return results;
})();
} else {
schemaFile = resolve(schemaFile);
getSchemaFile = Promise.resolve();
}
getSchemaFile.then(() => {
var addToSchema, configSchema, getAdder, schema, toDoc;
schema = require(schemaFile);
({toDoc, getAdder} = require("./validate"));
if ((configSchema = schema.configSchema) != null) {
addToSchema = getAdder(schema = {});
if (typeof configSchema === "function") {
configSchema(addToSchema, schema);
} else {
addToSchema(configSchema);
}
}
return console.log(toDoc(schema));
}).catch((e) => {
return console.log(e);
});