UNPKG

reclass-doc

Version:

Reclass model documentation generator.

128 lines (127 loc) 3.86 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var fs = require("fs"); var argparse_1 = require("argparse"); var meta2_logger_1 = require("meta2-logger"); var Util_1 = require("./Util"); var index_1 = require("./index"); /* * Setup argument parser */ var parser = new argparse_1.ArgumentParser({ version: '1.0.0', addHelp: true, }); parser.addArgument(['--output'], { help: 'Output directory', dest: 'output_dir' }); parser.addArgument(['--media-dir'], { help: 'Media dir', dest: 'media_dir' }); parser.addArgument(['--node-dir'], { help: 'Reclass node sub-directory', dest: 'node_dir' }); parser.addArgument(['--class-dir'], { help: 'Reclass classes sub-directory', dest: 'class_dir' }); parser.addArgument(['--template'], { help: 'Template dir', dest: 'template_dir' }); parser.addArgument(['--config'], { help: 'Config JSON filename', dest: 'config_file' }); parser.addArgument(['-w'], { help: 'Dynamically watch for changes and recompile', dest: 'watch', action: 'storeTrue' }); parser.addArgument(['-s'], { help: 'Start express server', dest: 'server', action: 'storeTrue' }); parser.addArgument(['--port'], { help: 'Server port', dest: 'port', defaultValue: 8080 }); parser.addArgument(['--verbose'], { help: 'Logging verbose level', dest: 'log_level', choices: ["log", "debug", "info", "warn", "error"], defaultValue: "info" }); parser.addArgument(["reclass_dir"], { help: 'Reclass directory', defaultValue: ".", nargs: "*" }); //Parse args var args = parser.parseArgs(); try { //Init logger var logger = new meta2_logger_1.Logger(); var logLevel = Util_1.parseLogLevel(args.log_level) || meta2_logger_1.LOG_LEVEL.INFO; logger.toConsole({ level: logLevel, colorize: true, timestamp: false }); logger.debug("CLI args", args); try { var config = {}; var reclassDir = (args.reclass_dir && args.reclass_dir.length > 0 ? args.reclass_dir[0] : "."); var configFilename = args.config_file || (reclassDir + "/reclass-doc.json"); //Load config file if (fs.existsSync(configFilename)) { logger.info("Reading configuration from '" + configFilename + "'..."); var configFile = fs.readFileSync(configFilename, { encoding: 'utf-8' }); config = JSON.parse(configFile); if (!(config instanceof Object)) throw new Error("Invalid configuration file structure."); } else { logger.warn("No config file '" + configFilename + "' found, using default values."); } //Merge flags to config if (args.output_dir) config.outputDir = args.output_dir; if (args.media_dir) config.mediaSrcDir = args.media_dir; if (args.node_dir) config.nodeDir = args.node_dir; if (args.class_dir) config.classDir = args.class_dir; if (args.template_dir) config.templateDir = args.template_dir; if (args.watch) config.watch = true; if (args.server) config.startServer = true; if (args.port) config.serverPort = parseInt(args.port); if (args.reclass_dir) config.reclassDir = reclassDir; //Init application logger.debug("Initializing ReclassDoc..."); var app = new index_1.ReclassDoc(config, logger); logger.info("Starting ReclassDoc..."); app.start(); } catch (err) { if (logLevel === meta2_logger_1.LOG_LEVEL.BREAK || logLevel === meta2_logger_1.LOG_LEVEL.DEBUG) logger.error(err, err.stack); else logger.error(err); } } catch (err) { console.error(err); }