he-cli-fe
Version:
frontend cli tool for development
117 lines (116 loc) • 3.45 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.input = exports.confirm = exports.select = exports.cCommand = void 0;
const child_process_1 = require("child_process");
const ora_1 = __importDefault(require("ora"));
const inquirer_1 = __importDefault(require("inquirer"));
// const clear = require("clear")
const tool_1 = require("utils/tool");
/**
* 子进程执行命令行指令
* @param loadText 加载提示
* @param args spawn子进程参数
*/
function cCommand(loadText, ...args) {
return new Promise((resolve) => {
const spinner = loadText ? ora_1.default(loadText) : null;
spinner && spinner.start();
const cp = child_process_1.spawn(...args);
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
const cmd = args[0];
cp.on('error', (err) => {
// clear()
// console.log(args)
spinner && spinner.fail(`指令错误,请检查是否安装${tool_1.redBlack(cmd.split('.')[0])}`);
throw new Error(err);
});
cp.on('close', () => {
spinner && spinner.succeed('完成');
resolve(true);
});
});
}
exports.cCommand = cCommand;
/**
* 命令行选择
* @param opt 可选项
* @param message 提示文本
*/
function select(opt, message) {
return new Promise((resolve) => {
const choices = opt.map((item, index) => {
return { value: index, name: item };
});
inquirer_1.default
.prompt([
{
type: 'list',
name: 'select',
default: 0,
message,
choices,
},
])
.then((res) => {
resolve(opt[res['select']]);
})
.catch(({ isTtyError }) => catchInquirer(!!isTtyError));
});
}
exports.select = select;
/**
* 命令行确认
* @param message 提示文本
*/
function confirm(message) {
return new Promise((resolve) => {
inquirer_1.default
.prompt([
{
type: 'confirm',
name: 'confirm',
default: true,
message,
},
])
.then((res) => {
resolve(res['confirm']);
})
.catch(({ isTtyError }) => catchInquirer(!!isTtyError));
});
}
exports.confirm = confirm;
/**
* 命令行输入文本
* @param message 提示文本
*/
function input(message) {
return new Promise((resolve) => {
inquirer_1.default
.prompt([
{
type: 'input',
name: 'input',
// default: true, //默认选中
message,
},
])
.then((res) => {
resolve(res['input']);
})
.catch(({ isTtyError }) => catchInquirer(!!isTtyError));
});
}
exports.input = input;
//抓取inquirer错误
function catchInquirer(isTtyError) {
let errMsg = '未知错误';
if (isTtyError) {
errMsg = "Prompt couldn't be rendered in the current environment";
}
tool_1.errLog(errMsg);
}