apisailor-cli
Version:
Commond tool for API sailor
125 lines (107 loc) • 3.28 kB
JavaScript
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;