@jin7942/ray
Version:
Lightweight CI/CD deployment tool powered by Docker and Git
36 lines (35 loc) • 1.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.askValidated = askValidated;
/**
* InputHelper for initWizard
*/
const readline_1 = __importDefault(require("readline"));
/**
* Prompts the user for input and validates it.
*
* @param prompt - Question to display
* @param validate - Validator function. Return `null` if valid, or error message string if invalid.
* @param defaultValue - Optional default value if user presses enter
* @returns A validated string from user input
*/
async function askValidated(prompt, validate, defaultValue) {
const rl = readline_1.default.createInterface({
input: process.stdin,
output: process.stdout,
});
const ask = () => new Promise((resolve) => rl.question(prompt, resolve));
let answer;
while (true) {
answer = (await ask()).trim() || defaultValue || '';
const error = validate(answer);
if (!error)
break;
console.log(`Invalid: ${error}`);
}
rl.close();
return answer;
}