reclass-doc
Version:
Reclass model documentation generator.
128 lines (127 loc) • 3.86 kB
JavaScript
#!/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);
}