@fxext/cli
Version:
fanxing miniapp cli
63 lines (50 loc) • 1.28 kB
JavaScript
const { program } = require('commander');
const path = require('path');
const fs = require('fs-extra');
const glob = require('glob');
const log = require('../lib/log');
let paramProjectName = '';
async function mian() {
program
.usage('init [project-name] [options]')
.arguments('[project-name]')
.action(name => {
paramProjectName = name;
})
.parse(process.argv);
ensureProjectDir(
paramProjectName,
async projectName => {
require('../lib/init')(projectName);
},
() => {
process.exit(1);
}
);
}
function ensureProjectDir(dirname, calllback, failcallback) {
const filesList = glob.sync('*');
if (dirname) {
if (invalid(dirname)) {
log.error('非法项目名,请使用字母、数字和-');
failcallback();
return;
}
let exists = filesList.some(fileName => fileName == dirname);
if (exists) {
log.error(`错误: '${dirname}' 目录已经存在!`);
failcallback();
} else {
calllback(dirname);
}
} else {
log.hint('将在当前目录创建项目\n');
const basename = path.basename(process.cwd());
calllback(basename);
}
function invalid(name) {
return /[^A-Za-z0-9-]/.test(name + '');
}
}
mian();