UNPKG

@kubiklabs/wasmkit

Version:

Wasmkit is a development environment to compile, deploy, test, run cosmwasm contracts on different networks.

144 lines (143 loc) 6.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HelpPrinter = void 0; const errors_1 = require("../core/errors"); const errors_list_1 = require("../core/errors-list"); const strings_1 = require("../util/strings"); const arguments_parser_1 = require("./arguments-parser"); const getMax = (a, b) => Math.max(a, b); class HelpPrinter { constructor(_programName, _version, _paramDefs, _tasks) { this._programName = _programName; this._version = _version; this._paramDefs = _paramDefs; this._tasks = _tasks; } printGlobalHelp(includeInternalTasks = false) { console.log(`${this._programName} version ${this._version}\n`); console.log(`Usage: ${this._programName} [GLOBAL OPTIONS] <TASK> [TASK OPTIONS]\n`); console.log("GLOBAL OPTIONS:\n"); this._printParamDetails(this._paramDefs); console.log("\n\nAVAILABLE TASKS:\n"); const tasksToShow = {}; for (const [taskName, taskDefinition] of Object.entries(this._tasks)) { if (includeInternalTasks || !taskDefinition.isInternal) { tasksToShow[taskName] = taskDefinition; } } const nameLength = Object.keys(tasksToShow) .map((n) => n.length) .reduce((a, b) => Math.max(a, b), 0); for (const name of Object.keys(tasksToShow).sort(strings_1.cmpStr)) { const { description = "" } = this._tasks[name]; console.log(` ${name.padEnd(nameLength)}\t${description}`); } console.log(""); console.log(`To get help for a specific task run: ${this._programName} help [task]\n`); } printTaskHelp(taskName) { const taskDefinition = this._tasks[taskName]; if (taskDefinition === undefined) { throw new errors_1.WasmkitError(errors_list_1.ERRORS.ARGUMENTS.UNRECOGNIZED_TASK, { task: taskName }); } const { description = "", name, paramDefinitions, positionalParamDefinitions } = taskDefinition; console.log(`${this._programName} version ${this._version}\n`); const paramsList = this._getParamsList(paramDefinitions); const positionalParamsList = this._getPositionalParamsList(positionalParamDefinitions); console.log(`Usage: ${this._programName} [GLOBAL OPTIONS] ${name}${paramsList}${positionalParamsList}\n`); if (Object.keys(paramDefinitions).length > 0) { console.log("OPTIONS:\n"); this._printParamDetails(paramDefinitions); console.log(""); } if (positionalParamDefinitions.length > 0) { console.log("POSITIONAL ARGUMENTS:\n"); this._printPositionalParamDetails(positionalParamDefinitions); console.log(""); } console.log(`${name}: ${description}\n`); console.log(`For global options help run: ${this._programName} help\n`); } _getParamValueDescription(paramDefinition) { return `<${paramDefinition.type.name.toUpperCase()}>`; } _getParamsList(paramDefinitions) { let paramsList = ""; for (const name of Object.keys(paramDefinitions).sort(strings_1.cmpStr)) { const definition = paramDefinitions[name]; const { defaultValue, isFlag } = definition; paramsList += " "; if (defaultValue !== undefined) { paramsList += "["; } paramsList += `${arguments_parser_1.ArgumentsParser.paramNameToCLA(name)}`; if (!isFlag) { paramsList += ` ${this._getParamValueDescription(definition)}`; } if (defaultValue !== undefined) { paramsList += "]"; } } return paramsList; } _getPositionalParamsList(positionalParamDefinitions) { let paramsList = ""; for (const definition of positionalParamDefinitions) { const { defaultValue, isVariadic, name } = definition; paramsList += " "; if (defaultValue !== undefined) { paramsList += "["; } if (isVariadic) { paramsList += "..."; } paramsList += name; if (defaultValue !== undefined) { paramsList += "]"; } } return paramsList; } _printParamDetails(paramDefinitions) { const paramKeys = Object.keys(paramDefinitions); const shortParamsNameLength = paramKeys .map((n) => arguments_parser_1.ArgumentsParser.shortParamNameToCLA(paramDefinitions[n].shortName).length) .reduce(getMax, 0); const paramsNameLength = paramKeys .map((n) => arguments_parser_1.ArgumentsParser.paramNameToCLA(n).length) .reduce(getMax, 0); for (const name of paramKeys.sort(strings_1.cmpStr)) { const { description, defaultValue, isOptional, isFlag, shortName } = paramDefinitions[name]; const paddedShortName = arguments_parser_1.ArgumentsParser.shortParamNameToCLA(shortName) .padEnd(shortParamsNameLength) + (shortName ? "," : " "); let msg = ` ${paddedShortName} `; msg += `${arguments_parser_1.ArgumentsParser.paramNameToCLA(name).padEnd(paramsNameLength)}\t`; if (description !== undefined) { msg += `${description} `; } if (isOptional && defaultValue !== undefined && !isFlag) { msg += `(default: ${JSON.stringify(defaultValue)})`; } console.log(msg); } } _printPositionalParamDetails(positionalParamDefinitions) { const paramsNameLength = positionalParamDefinitions .map((d) => d.name.length) .reduce((a, b) => Math.max(a, b), 0); for (const definition of positionalParamDefinitions) { const { name, description, isOptional, defaultValue } = definition; let msg = ` ${name.padEnd(paramsNameLength)}\t`; if (description !== undefined) { msg += `${description} `; } if (isOptional && defaultValue !== undefined) { msg += `(default: ${JSON.stringify(defaultValue)})`; } console.log(msg); } } } exports.HelpPrinter = HelpPrinter;