UNPKG

documon

Version:

A documentation system for mortals. Use with any language.

184 lines (139 loc) 4.35 kB
/* # run cd /Volumes/Drives/projects/documon/documon node . */ // TOOD: // - template css has a nowrap in a properties list // - windows ie check var fs = require("fs"); var path = require("./src/npath"); var log = require('./src/log'); var documon = require('./src/documon'); var info = require('./src/info'); var mist = require('./src/minimist'); var errors = []; function cli(){ var argv = mist(process.argv.slice(2)); var help = argv.h ? true : false; if (help) { log(info.usage); return null; } else { // Build array from semicolon delimted list of ignore files var ig = argv.g; if(ig){ ig = ig.split(";"); for(var i=0; i<ig.length; i++){ ig[i] = ig[i].trim(); } } run({ src : argv.i || argv._[0], out : argv.o || argv._[1], template : argv.t, print : argv.p, name : argv.n, ignore : ig, version : argv.v, launch : argv.l, dumpData : argv.d, sourceExt : argv.e, more : argv.m, docBegin : argv.a, docEnd : argv.z, indexShortcutName : argv.x, moreQuirkDelimiter : argv.q, gati : argv.y }); } } function exists(fpath, kind) { var result = false; if (fpath) { fpath = path.resolve(fpath); if (!fs.existsSync(fpath)) { errors.push(kind + " doesn't exists: " + fpath); } else { result = true; } } errors.push(kind + " not specified.") return result; } function run(opts) { if( ! opts ){ errors.push("No source defined.") log(errors, "Errors"); } else { if(typeof opts === 'string'){ opts = { src : opts } } var quiet = opts.print ? false : true; var src = opts.src; var out = opts.out; var template = opts.template; var inputOK; if( ! src ){ inputOK = false; } else { if(typeof src == 'object'){ for(var i=0; i<src.length; i++){ inputOK = exists(src[i], "Input folder"); if( ! inputOK ){ break; } } } else { inputOK = exists(src, "Input folder"); } } // Can be empty, but if set, ensure it exists. var outputOK = true; if (out) { outputOK = exists(out, "Output folder"); } // Can be empty, but if set, ensure it exists. var templateOK = true; if (template) { templateOK = exists(template, "Template folder"); } log(info.copyright, null, quiet); if (inputOK && outputOK && templateOK) { var conf = { src : src, out : out, template : template, name : opts.name, version : opts.version, launch : opts.launch, ignore : opts.ignore, print : opts.print, dumpData : opts.dumpData, sourceExt : opts.sourceExt, more : opts.more, docBegin : opts.docBegin, docEnd : opts.docEnd, indexShortcutName : opts.indexShortcutName, moreQuirkDelimiter : opts.moreQuirkDelimiter, gati : opts.gati }; log(conf, "Config", quiet); documon.run(conf); } else { log(info.usage, null, quiet); log(opts, "Specified Options", quiet); log(errors, "Errors", quiet); } } } // ------------------------- // If running as CLI (direct access via shell): // Note this is the same as in documon.js parallel to this file. if (require.main === module) { cli(); } // Expose "run" for running locally (as a require) module.exports = run;