UNPKG

dce-dev-wizard

Version:

Wizard for managing development apps at Harvard DCE.

77 lines 2.7 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var clear_1 = __importDefault(require("clear")); // Import shared helpers var print_1 = __importDefault(require("./print")); var prompt_1 = __importDefault(require("./prompt")); /** * Show a chooser between many options * @author Gabe Abrams * @param question the question to ask * @param options list of options to choose from * @param title main title to show above the choices * @param dontClear if true, don't clear the console before * @returns chosen option */ var showChooser = function (opts) { var question = opts.question, options = opts.options, title = opts.title, dontClear = opts.dontClear; // Print the header if (!dontClear) { (0, clear_1.default)(); } if (title) { print_1.default.title(title); console.log(''); } print_1.default.subtitle(question); // Make sure all options have tags var nextNumber = 1; var optionsWithTags = options.map(function (option) { // Get/generate a tag var tag = option.tag; if (!tag) { tag = String(nextNumber); nextNumber += 1; } // Return complete option return __assign(__assign({}, option), { tag: tag }); }); // Print options for (var i = 0; i < optionsWithTags.length; i++) { console.log("".concat(optionsWithTags[i].tag, " - ").concat(optionsWithTags[i].description)); } // Ask user to choose var responseTag = (0, prompt_1.default)('> ').trim(); // Find the appropriate option for (var i = 0; i < optionsWithTags.length; i++) { if (responseTag.toLowerCase() === optionsWithTags[i].tag.toLowerCase()) { // Found the right option return __assign(__assign({}, optionsWithTags[i]), { index: i }); } } // No tag found (0, clear_1.default)(); print_1.default.title('Invalid Choice'); console.log(''); print_1.default.enterToContinue(); return showChooser({ question: question, options: optionsWithTags, }); }; exports.default = showChooser; //# sourceMappingURL=showChooser.js.map