Source: cli.js

"use strict";
/**
 * `GlaceJS` proxy runner.
 *
 * @module
 */

require("./help");

var U = require("glace-utils");

var Commands = require("./commands");
var CONF = require("./config");
var interactive = require("./interactive");
/**
 * Proxy runner.
 *
 * @function
 * @arg {Commands} cmd - Commands.
 * @return {Promise<void>}
 */
module.exports.run = cmd => {
    cmd = U.defVal(cmd,
        new Commands(CONF, { logger: console.log, colored: true }));

    return Promise
        .resolve()
        .then(() => {
            if (CONF.proxy.global) return cmd.launchGlobalProxy();
        })
        .then(() => {
            if (CONF.proxy.http) return cmd.launchHttpProxy();
        })
        .then(() => {
            if (CONF.chrome.launch) return cmd.launchChrome();
        })
        .then(() => interactive(cmd))
        .catch(U.exit("Promise error"));
};

process.on("uncaughtException", U.exit("Uncaught Exception"));
process.on("unhandledRejection", U.exit("Unhandled Rejection"));