@soubhikchatterjee/tunnel-agent
Version:
Expose your local server to the outside world!
50 lines (42 loc) • 1.38 kB
JavaScript
;
const { program, InvalidArgumentError, Argument } = require("commander");
// Custom Modules
const { setConfig, getConfig } = require("./helpers/config.helper");
const { initClient } = require("./helpers/socket.helper");
const { generateSubdomain } = require("./helpers/util.helper");
const SERVICE_DOMAIN = isLocal() ? "localhost:3000" : "tunnelagent.com";
function isLocal() {
return process.env.NODE_ENV === "local";
}
program
.name("Tunnel Agent")
.description("Expose your local server to the outside world!!");
program
.command("start")
.argument("<port>", "local server port number", (value) => {
const port = parseInt(value, 10);
if (isNaN(port)) {
throw new InvalidArgumentError("Port is not a number");
}
return port;
})
.option("-s, --subdomain <string>", "subdomain name")
.action((port, options) => {
options.port = port || 80;
let config = getConfig();
// Build the subdomain...
let subdomain = "",
url = "";
if (isLocal()) {
url = `http://soubhik.${SERVICE_DOMAIN}`;
} else {
subdomain = options.subdomain || generateSubdomain();
url = `https://${subdomain}.${SERVICE_DOMAIN}`;
}
options.subdomain = subdomain;
options.server = url;
config = setConfig(options);
options.path = config.path;
initClient(options);
});
program.parse();