UNPKG

@socialgorithm/uabc

Version:

Ultimate Algorithm Battle Client

130 lines 3.84 kB
"use strict"; exports.__esModule = true; var commandLineArgs = require("command-line-args"); var getUsage = require("command-line-usage"); var info = require("../../package.json"); var optionDefinitions = [ { name: "file", alias: "f", type: String, typeLabel: "{underline file [file]}", defaultOption: true, description: "Path to the client executable/s. If placed at the end, you don't have to put -f", group: "main" }, { name: "token", alias: "t", type: String, typeLabel: "{underline token}", description: "Your team name or identifier", group: "online" }, { name: "lobby", alias: "l", type: String, typeLabel: "{underline lobby}", description: "Identification token for the lobby you want to play in", group: "online" }, { name: "host", type: String, typeLabel: "{underline host:port}", description: "host:port where the client should connect to. You can specify https:// as well if SSL is required", group: "online" }, { name: "proxy", type: String, description: "HTTP proxy to use for the web socket connection. If the env var HTTP_PROXY is set, it will automatically use that.", group: "online" }, { name: "log", type: String, typeLabel: "{underline [file]}", description: "File where game logs should be stored, defaults to `uabc-[date].log` in the current directory if no file name is specified", group: "main" }, { name: "help", alias: "h", type: Boolean, description: "Print this guide", group: "helper" }, { name: "version", alias: "v", type: Boolean, description: "Display the client version", group: "helper" }, { name: "verbose", type: Boolean, description: "Log everything to the console", group: "helper" }, ]; var sections = [ { header: "uabc v" + info.version, content: [ "Ultimate Algorithm Battle Client - #socialgorithm", "Documentation & more information at {underline https://play.socialgorithm.org}", ] }, { header: "Main Options", optionList: optionDefinitions, group: ["main"] }, { header: "Online Games", optionList: optionDefinitions, group: ["online"] }, { header: "Helpers", optionList: optionDefinitions, group: ["helper", "_none"] }, { header: "Synopsis", content: [ "$ uabc {bold --host} {underline host:1234} {bold -l} {underline lobby} {bold -t} {underline token} {bold -f} {underline path/to/client/executable}", "$ uabc {bold --log} {bold -p} {bold -f} {underline path/to/client/executable}", "$ uabc {bold --help}", ] }, ]; function parseInput() { var options = commandLineArgs(optionDefinitions)._all; Object.keys(options).map(function (key) { if (options[key] === null) { options[key] = true; } }); function isEmpty(map) { return Object.entries(map).length === 0 && map.constructor === Object; } if (options.version) { console.log(info.version); process.exit(0); } if (options.help || isEmpty(options) || !options.token) { console.log(getUsage(sections)); process.exit(0); } if (!options.file || options.file.length < 1) { console.error("uabc error: You must specify an executable.", options); process.exit(-1); } return options; } exports["default"] = parseInput; //# sourceMappingURL=options.js.map