UNPKG

apisailor-cli

Version:
125 lines (107 loc) 3.28 kB
const program = require("commander"); const foreverMonitor = require("forever-monitor"); const forever = require("forever"); var shell = require("shelljs"); const config = { uid: "apisailor", port: "3902", devPort: "3901", host: "0.0.0.0", db: "/.apisailor/db/", logs: "/.apisailor/logs/", logFile: "apisailor-server.log", outFile: "apisailor-out.log", errFile: "apisailor-error.log", config: "/.apisailor/config/", }; const fs = require("fs"); const path = require("path"), homedir = require("os").homedir(); const logsDir = path.join(homedir, config["logs"]); const dbDir = path.join(homedir, config["db"]); const configDir = path.join(homedir, config["config"]); if (!fs.existsSync(logsDir)) { shell.mkdir("-p", logsDir); } if (!fs.existsSync(dbDir)) { shell.mkdir("-p", dbDir); } if (!fs.existsSync(configDir)) { shell.mkdir("-p", configDir); } function start() { var options = { uid: config["uid"], silent: true, max: 1, sourceDir: __dirname, watch: false, killTree: true, args: ["--max-old-space-size=4024"], minUptime: 100, logFile: path.join(logsDir, config["logFile"]), // Path to log output from forever process (when daemonized) outFile: path.join(logsDir, config["outFile"]), // Path to log output from child stdout errFile: path.join(logsDir, config["errFile"]), // Path to log output from child stderr }; function attachChild(ch) { ch.on("exit", function () { console.log("Apisailor has exited."); }); ch.on("start", function () { console.log("Apisailor has started."); }); ch.on("watch:restart", function (info) { console.error("Restarting script because " + info.file + " changed"); }); ch.on("restart", function () { console.error("Forever restarting script for " + child.times + " time"); }); ch.on("exit:code", function (code) { console.error("Forever detected script exited with code " + code); //process.exit(); }); ch.on("error", function (error) { console.error("Forever detected error"); }); } program.version("1.3.3"); program .command("start") .description("Start apisailor") .option("Start apisailor") .action(function () { console.log("Apisailor has started."); console.log("Logs location " + logsDir); const ch = forever.startDaemon("/../server/index.js", options); attachChild(ch); forever.startServer(ch); }); program .command("stop") .description("Stop apisailor") .option("Stop apisailor") .action(function () { forever.stopAll(function () {}); console.log("Apisailor has stopped."); forever.cleanUp(); }) .on("--help", function () { console.log(""); console.log("Examples:"); console.log(""); console.log(" $ apisailor start"); console.log(" $ apisailor stop"); }); /*program .command('*') .action(function(env){ console.log('starting "%s"', env); if(!srv.server){ srv.server= require("../server").server(); } });*/ process.env.NODE_ENV = "production"; process.env.NODE_OPTIONS = "--max-old-space-size=4024"; program.parse(process.argv); } module.exports.start = start;