@sanpjs/cmd-init
Version:
Sanp init command
76 lines • 2.67 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.handler = exports.builder = exports.description = exports.command = void 0;
/**
* @file main process
* @author zttonly <zttonly@baidu.com>
*/
const path_1 = __importDefault(require("path"));
const utils_1 = require("@sanpjs/utils");
const check_1 = __importDefault(require("./check"));
const getTemplate_1 = __importDefault(require("./getTemplate"));
const generate_1 = __importDefault(require("./generate"));
exports.command = 'init [template] [folder-name]';
exports.description = 'Create a component or directory';
exports.builder = {
'no-cache': {
default: true,
type: 'boolean',
describe: 'Use local cache'
},
config: {
type: 'string',
hidden: true,
describe: 'config file or JSON string of config'
},
force: {
type: 'boolean',
default: false,
describe: 'Forced coverage'
},
username: {
type: 'string',
alias: 'u',
default: '',
describe: 'Specify the username used by git clone command'
}
};
const handler = (args) => {
let { template, folderName } = args;
let isCurrentDir = false;
if (!template) {
utils_1.logger.error('Template name is required');
process.exit(1);
}
if (!folderName || folderName === '.' || folderName === './') {
isCurrentDir = true;
folderName = './';
}
const dest = path_1.default.resolve(folderName);
// 记录一下开始新建工程时的起始时间
const startTime = Date.now();
const options = Object.assign({}, args, { template, folderName, isCurrentDir });
const tasks = [
{ title: '🔍 Checking directory status...', task: (0, check_1.default)(template, dest, options) },
{ title: '🚚 Getting project scaffolding template...', task: (0, getTemplate_1.default)(template, dest, options) },
{ title: '🔨 Generating directory structure...', task: (0, generate_1.default)(template, dest, options) }
];
const taskList = new utils_1.TaskList(tasks);
taskList
.run()
.then(() => {
const duration = ((Date.now() - +new Date(startTime)) / 1e3).toFixed(2);
// eslint-disable-next-line no-console
console.log('✨ Done in ' + duration + 's.');
process.exit(0);
})
.catch((e) => {
utils_1.logger.error(e);
process.exit(1);
});
};
exports.handler = handler;
//# sourceMappingURL=index.js.map