@watone/wt-cli
Version:
watone tools
115 lines (106 loc) • 4.16 kB
JavaScript
/*
* @describe: 命令配置
* @Author: superDragon
* @Date: 2019-08-29 17:48:31
* @LastEditors: xkloveme
* @LastEditTime: 2023-02-15 14:34:47
*/
;
const clear = require('clear');
const chalk = require('chalk');
const figlet = require('figlet');
const program = require('commander');
const exec = require('mz/child_process').exec;
const execSync = require('mz/child_process').execSync;
const locals = require('../locals')();
const log = require('../lib/utils/log');
const utils = require('../lib/utils');
const apps = require('./scaffold');
// 检查版本更新方法
const checkUpdate = require('../lib/utils/checkUpdate');
let version = process.env.VERSION;
let tableVersion = [
{ name: "watone", version: version },
{ name: "node", version: execSync('node -v', { encoding: 'utf8' }).replace(/[\r\n]/g, "") },
{ name: "npm", version: execSync('npm -v', { encoding: 'utf8' }).replace(/[\r\n]/g, "") },
]
utils.cmdExists('git') && tableVersion.push({ name: "git", version: execSync('git --version', { encoding: 'utf8' }).replace(/[\r\n]/g, "") })
utils.cmdExists('yarn') && tableVersion.push({ name: "yarn", version: execSync('yarn -v', { encoding: 'utf8' }).replace(/[\r\n]/g, "") })
utils.cmdExists('pnpm') && tableVersion.push({ name: "pnpm", version: execSync('pnpm -v', { encoding: 'utf8' }).replace(/[\r\n]/g, "") })
let tableInfo = [
{ [locals.DOC]: "说明文档", [locals.LINK]: "https://wt-front-end.github.io/wt-docs/wt-cli.html" },
{ [locals.DOC]: "前端文档", [locals.LINK]: "https://wt-front-end.github.io/wt-docs/" },
{ [locals.DOC]: "WT-UI-ANTD组件库", [locals.LINK]: "https://wt-front-end.github.io/wt-ui-antd/" },
{ [locals.DOC]: "表格转化工具", [locals.LINK]: "https://www.jixiaokang.com/black-tool/" },
{ [locals.DOC]: "npm地址", [locals.LINK]: "https://www.npmjs.com/package/@watone/wt-cli" },
{ [locals.DOC]: "仓库地址", [locals.LINK]: "http://30.207.88.65:8090/watone/wt-cli" }
]
// 检查最新版本
checkUpdate().then(async () => {
let logo = chalk.yellow(figlet.textSync('WATONE', { horizontalLayout: 'full' }))
// 如果后序没有输入命令,执行帮助指令
if (!process.argv[2] || !process.argv) {
console.log(logo);
exec('watone -h').then((res) => {
console.log(res[0])
})
}
// 获取版本号
else {
let argv = process.argv[2];
if (argv === '-V' || argv === '-v' || argv === '--version') {
clear();
console.log(logo);
log.info(locals.WELECOME);
log.info('watone version: ', version);
console.log(chalk.blue(locals.HELP_DESC));
console.group(locals.SHOW_VERSION);
console.table(tableVersion);
console.groupEnd();
console.group(locals.DOC_LINK);
console.table(tableInfo, [locals.DOC, locals.LINK]);
}
}
program.on('--help', function () {
console.group('Examples:');
log.info('获取版本信息 $ watone -v');
log.info('搜索内容 $ watone s 杭州到北京多远');
log.info('当前天气 $ watone a');
log.info('启动http服务 $ watone http 或者 $ http');
log.info('生成二维码 $ watone qrcode 我的二维码 或者 $ watone q 我的二维码');
});
// 定义命令
program
// 设置/获取命令用法str
.usage('[commands] [options]')
// 定义顶级命令的参数语法。
.arguments('[cmd]')
.option('-f, --force', locals.FORCE_OPTION)
.option('ls', locals.LS_OPTION)
.option('-p, --port', locals.PORT_OPTION)
.option('-o, --open', locals.HTTP_OPEN_OPTION)
.option('-d, --dir', locals.HTTP_URL_OPTION)
.option('-v, --version', locals.SHOW_VERSION)
// 注册命令的回调
.action((cmd) => {
if (cmd) {
log.error(`\`wt ${cmd}\` ${locals.NO_COMMAND}`);
}
});
// 命令
apps.init(program);
apps.build(program);
apps.weather(program);
apps.serach(program);
apps.http(program);
apps.dev(program);
apps.install(program);
apps.qrcode(program);
apps.translation(program);
apps.ip(program);
apps.open(program);
apps.app(program);
apps.npm(program);
program.parse(process.argv);
});