@irim/bin-tool
Version:
node bin tools
108 lines (107 loc) • 3.2 kB
JavaScript
;
// 控制台输入 inquirer.js 封装
// @author Pluto <huarse@gmail.com>
// @create 2020/05/14 10:58
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const inquirer_1 = __importDefault(require("inquirer"));
const chalk_1 = __importDefault(require("chalk"));
/**
* node 控制台二次确认
* @param message 提示信息
* @param defaultValue 默认值
* @example
* const isUpdate = await confirm('请确认是否要升级?');
*/
async function confirm(message, defaultValue = false) {
const result = await inquirer_1.default.prompt([{
type: 'confirm',
name: 'value',
message,
default: defaultValue || false,
}]);
return result.value;
}
exports.confirm = confirm;
/**
* node 控制台用户输入
* @param message 提示信息
* @param defaultValue 默认值
* @param required 是否必填
* @example
* const username = await prompt('请输入用户名:');
*/
async function prompt(message, defaultValue, required = false) {
const result = await inquirer_1.default.prompt([{
type: 'input',
name: 'value',
message,
default: defaultValue,
}]);
if (!result.value && required) {
return await prompt(chalk_1.default.red(message), defaultValue, true);
}
return result.value;
}
exports.prompt = prompt;
/**
* node 控制台用户输入, alias for prompt
* @param message 提示信息
* @param defaultValue 默认值
* @param required 是否必填
* @example
* const username = await input('请输入用户名:');
*/
exports.input = prompt;
/**
* node 控制台用户输入
* @param message 提示信息
* @param defaultValue 默认值
* @param required 是否必填
* @example
* const username = await password('请输入密码:');
*/
async function password(message, defaultValue, required = false) {
const result = await inquirer_1.default.prompt([{
type: 'password',
name: 'value',
message,
default: defaultValue,
}]);
if (!result.value && required) {
return await prompt(chalk_1.default.red(message), defaultValue, true);
}
return result.value;
}
exports.password = password;
/**
* node 控制台用户选择
* @param message 提示信息
* @param options 选项
* @param defaultValue 默认值或默认的选项 index
* @example
* const value = await select('请选择性别: ', ['男', '女']);
*/
async function select(message, options, defaultValue) {
const result = await inquirer_1.default.prompt([{
type: 'list',
name: 'value',
message,
choices: options,
default: defaultValue,
}]);
return result.value;
}
exports.select = select;
async function holding(tips = '按回车继续...') {
await inquirer_1.default.prompt([{
type: 'input',
name: 'value',
message: tips,
prefix: '',
}]);
return true;
}
exports.holding = holding;