datamax-cli
Version:
datamax plugin cli
124 lines (119 loc) • 3.43 kB
JavaScript
const inquirer = require("inquirer");
const fs = require("fs-extra");
const shelljs = require("shelljs");
shelljs.config.verbose = true;
shelljs.config.silent = true;
const chalk = require("chalk");
var path = require("path");
module.exports = function (config, args) {
function showQuestions(examples) {
const isCN = require("../build/util/util")["isCN"];
var questions = [
{
type: "input",
name: "pluginName",
message: "你要创建的组件名(英文)",
validate: function (value) {
if (isCN(value)) {
return "不能为中文,重新输入";
}
if (!value) {
return "不允许为空";
}
if (/_/.test(value)) {
return "不允许存在下划线";
}
if (fs.existsSync(value)) {
return "该组件目录已存在";
}
return true;
},
},
{
type: "input",
name: "menuName",
message: "你要创建的组件在datamax菜单显示名是:",
validate: function (value) {
if (!value) {
return "不允许为空";
}
return true;
},
},
{
type: "input",
name: "description",
message: "你的组件描述是:",
validate: function (value) {
return true;
},
default: "no desc",
},
{
type: "input",
name: "author",
message: "插件创作者名称是(英文):",
validate: function (value) {
if (isCN(value)) {
return "不能为中文,重新输入";
}
return true;
},
default: "no name",
},
{
type: "input",
name: "author",
message: "插件创作者名称是(英文):",
validate: function (value) {
if (isCN(value)) {
return "不能为中文,重新输入";
}
return true;
},
default: "no name",
},
{
type: "when",
name: "autoOpen",
message: "自动打开插件编辑器?:",
validate: function (value) {
return Boolean(value)
},
default: true,
},
];
return inquirer.prompt(questions).then(function (answers) {
console.log(answers);
const buildFile = require("../build/index");
new Promise((resolve) => {
console.log(chalk.green("[1] 开始生成插件"));
buildFile(answers, resolve);
})
.then(() => {
console.log(chalk.green(" 生成插件成功"));
})
.then(() => {
console.log(chalk.green("[2] 开始安装插件依赖"));
if (fs.existsSync(answers.pluginName)) {
const root = process.cwd();
process.chdir(path.join(root, `./${answers.pluginName}`));
shelljs.exec("npm install");
}
})
.then(() => {
console.log(chalk.green("安装插件依赖成功"));
console.log(
chalk.blueBright(`cd ${answers.pluginName};npm run serve`)
);
return process.exit();
})
.catch((error) => {
console.log(chalk.red(" 生成插件失败"));
console.log(chalk.red(error));
return process.exit();
});
});
}
Promise.resolve().then(showQuestions);
};