UNPKG

@soubhikchatterjee/tunnel-agent

Version:
50 lines (42 loc) 1.38 kB
"use strict"; 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();