appcenter-cli
Version:
Command line tool for Visual Studio App Center
97 lines (96 loc) • 3.25 kB
JavaScript
;
// Functions to read information from the user
Object.defineProperty(exports, "__esModule", { value: true });
exports.prompt = void 0;
const inquirer = require("inquirer");
const io_options_1 = require("./io-options");
function prompt(message) {
return prompt
.question([
{
name: "result",
message: message,
},
])
.then((answers) => answers["result"].toString());
}
exports.prompt = prompt;
(function (prompt) {
function confirm(message, defaultResponse) {
return prompt
.question([
{
type: "confirm",
name: "confirm",
message: message,
default: !!defaultResponse,
},
])
.then((answers) => !!answers["confirm"]);
}
prompt.confirm = confirm;
function confirmWithTimeout(message, timeoutMS, defaultResponse) {
if (io_options_1.isQuiet()) {
return Promise.resolve(!!defaultResponse);
}
else {
let timerId;
const confirmPrompt = inquirer.prompt({
type: "confirm",
name: "confirm",
message: message,
default: !!defaultResponse,
});
const promptCompleted = confirmPrompt.then((answers) => {
clearTimeout(timerId);
return !!answers["confirm"];
});
const timeoutPromise = new Promise((resolve, reject) => {
timerId = setTimeout(resolve, timeoutMS);
}).then(() => {
confirmPrompt.ui.close();
return !!defaultResponse;
});
return Promise.race([promptCompleted, timeoutPromise]);
}
}
prompt.confirmWithTimeout = confirmWithTimeout;
function password(message) {
return prompt
.question([
{
type: "password",
name: "result",
message: message,
},
])
.then((answers) => answers["result"].toString());
}
prompt.password = password;
function question(questions) {
if (io_options_1.isQuiet()) {
if (!Array.isArray(questions)) {
// Casting is done here due to incompatibility between typings and @types package
questions = [questions];
}
const answers = questions.reduce((answers, q) => {
if (answers instanceof Error) {
return answers;
}
if (q.type !== "confirm") {
return new Error("Cannot prompt for input in quiet mode");
}
answers[q.name] = true;
return answers;
}, {});
if (answers instanceof Error) {
return Promise.reject(answers);
}
return Promise.resolve(answers);
}
// Wrap inquirer promise in "real" promise, typescript definitions
// don't line up.
return Promise.resolve(inquirer.prompt(questions));
}
prompt.question = question;
})(prompt = exports.prompt || (exports.prompt = {}));