UNPKG

ryuu

Version:

Domo App Dev Studio CLI, The main tool used to create, edit, and publish app designs to Domo

104 lines 3.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createInput = exports.createSelect = exports.createConfirm = exports.createInstanceAutocompleteWithValidation = exports.createInstanceAutocomplete = void 0; const enquirer_1 = require("enquirer"); const { AutoComplete } = require('enquirer'); const login_1 = require("./login"); /** * Modern CLI prompts using Enquirer */ // Helper to ensure clean terminal state const restoreTerminal = () => { // Reset formatting and clear any stale output process.stdout.write('\x1b[0m'); }; /** * Creates a real-time autocomplete prompt for instance selection using Enquirer. */ const createInstanceAutocomplete = async (message = 'Select a Domo instance:', allowNew = true) => { const previousLogins = login_1.Login.getPreviousLogins(); const currentLogin = login_1.Login.getCurrentLogin()?.instance; // Create the list of instances with current login at the top const instances = [ ...(currentLogin ? [currentLogin] : []), ...previousLogins .map(login => login.instance) .filter(instance => instance !== currentLogin), ]; if (allowNew) { instances.push('+ Add new instance'); } // Use AutoComplete class directly for better control over rendering const autocomplete = new AutoComplete({ name: 'instance', message, choices: instances, initial: 0, limit: 10, // Limit visible choices to prevent rendering issues }); const result = await autocomplete.run(); restoreTerminal(); return result; }; exports.createInstanceAutocomplete = createInstanceAutocomplete; /** * Creates an autocomplete prompt for instance selection with validation for new instances. * Note: Validation is lenient - allows any input and validation happens in the calling command. */ const createInstanceAutocompleteWithValidation = async (message = 'Select a Domo instance:', allowNew = true) => { const selectedInstance = await (0, exports.createInstanceAutocomplete)(message, allowNew); if (selectedInstance === '+ Add new instance') { const result = await (0, enquirer_1.prompt)({ type: 'input', name: 'newInstance', message: 'Enter new Domo instance (e.g., company.domo.com):', // No validation here - let the calling command handle validation and confirmation // This allows users to enter any instance and then confirm if it's invalid }); return result.newInstance; } return selectedInstance; }; exports.createInstanceAutocompleteWithValidation = createInstanceAutocompleteWithValidation; /** * Creates a single-key confirm prompt (y/n without Enter) using Enquirer. */ const createConfirm = async (message, defaultValue = true) => { const result = await (0, enquirer_1.prompt)({ type: 'confirm', name: 'confirm', message, initial: defaultValue, }); return result.confirm; }; exports.createConfirm = createConfirm; /** * Creates a select prompt (multiple choice) using Enquirer. */ const createSelect = async (message, choices, initial) => { const result = await (0, enquirer_1.prompt)({ type: 'select', name: 'choice', message, choices, initial, }); return result.choice; }; exports.createSelect = createSelect; /** * Creates an input prompt using Enquirer. */ const createInput = async (message, initial, validate) => { const result = await (0, enquirer_1.prompt)({ type: 'input', name: 'input', message, initial, validate, }); return result.input; }; exports.createInput = createInput; //# sourceMappingURL=prompts.js.map