@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
120 lines (59 loc) • 6.45 kB
JavaScript
"use strict";var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");_Object$defineProperty(exports, "__esModule", { value: true });exports["default"] = void 0;var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));var _path = _interopRequireDefault(require("path"));
var _inquirer = _interopRequireDefault(require("inquirer"));
var _index = require("./index.js");
var _fileWrapper = require("./lib/fileWrapper.js"); // import getLatestVersion from 'latest-version'
var CWD = process.cwd();
/**
* 生成小游戏工程
* @param {String} projectName 工程名
* @param {Object} options
* @param {String} options.cwd 要创建小游戏工程的路径
* @param {String} options.template 创建小游戏工程使用的模板
* @param {String} options.force 是否强制覆盖,如果指定目录已经存在
*/function
create(_x, _x2) {return _create.apply(this, arguments);}function _create() {_create = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(projectName, _ref) {var _ref$cwd, cwd, template, _ref$force, force, inCurrent, name, targetDir, _yield$inquirer$promp, ok, _yield$inquirer$promp2, action;return _regenerator["default"].wrap(function _callee$(_context) {while (1) switch (_context.prev = _context.next) {case 0:_ref$cwd = _ref.cwd, cwd = _ref$cwd === void 0 ? CWD : _ref$cwd, template = _ref.template, _ref$force = _ref.force, force = _ref$force === void 0 ? false : _ref$force;
// 是否是在当前目录创建小游戏工程,也就是projectName指定为.
inCurrent = projectName === '.';
// 如果是在当前目录创建小游戏工程,name 取当前目录的目录名
name = inCurrent ? _path["default"].relative(_path["default"].join(cwd, '../'), cwd) : projectName;
targetDir = _path["default"].resolve(cwd, projectName || '.');if (!
_index.fs.existsSync(targetDir)) {_context.next = 32;break;}if (!
inCurrent) {_context.next = 14;break;}_context.next = 8;return (
_inquirer["default"].prompt([
{
name: 'ok',
type: 'confirm',
message: cwd === CWD ? 'Generate project in current directory?' : "Generate project in ".concat(cwd, "?")
}]
));case 8:_yield$inquirer$promp = _context.sent;ok = _yield$inquirer$promp.ok;if (
ok) {_context.next = 12;break;}return _context.abrupt("return");case 12:_context.next = 32;break;case 14:if (!
force) {_context.next = 20;break;}
(0, _index.log)("\nRemoving ".concat(_index.chalk.cyan(targetDir), "..."));_context.next = 18;return (
_index.fs.remove(targetDir));case 18:_context.next = 32;break;case 20:_context.next = 22;return (
_inquirer["default"].prompt([
{
name: 'action',
type: 'list',
message: "Target directory ".concat(_index.chalk.cyan(targetDir), " already exists. Pick an action:"),
choices: [
{ name: 'Overwrite', value: 'overwrite' },
{ name: 'Merge', value: 'merge' },
{ name: 'Cancel', value: false }]
}]
));case 22:_yield$inquirer$promp2 = _context.sent;action = _yield$inquirer$promp2.action;if (
action) {_context.next = 28;break;}return _context.abrupt("return");case 28:if (!(
action === 'overwrite')) {_context.next = 32;break;}
(0, _index.log)("\nRemoving ".concat(_index.chalk.cyan(targetDir), "..."));_context.next = 32;return (
_index.fs.remove(targetDir));case 32:_context.next = 34;return (
createImpl(name, targetDir, template));case 34:case "end":return _context.stop();}}, _callee);}));return _create.apply(this, arguments);}function
createImpl(_x3, _x4, _x5) {return _createImpl.apply(this, arguments);}
/**
* 生成工程目录
* @param name 项目名
*/function _createImpl() {_createImpl = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(name, context, template) {var templatePath, cdTip;return _regenerator["default"].wrap(function _callee2$(_context2) {while (1) switch (_context2.prev = _context2.next) {case 0:(0, _index.logWithSpinner)("\u2728", "Creating project in ".concat(_index.chalk.yellow(context), "."));templatePath = _path["default"].join(__dirname, '../../', 'templates', template);if (!_index.fs.existsSync(templatePath)) {templatePath = _path["default"].join(__dirname, '../../', 'templates', 'default');}(0, _index.stopSpinner)();(0, _index.logWithSpinner)("\uD83D\uDCC4", 'Copy Files from templates...');_context2.next = 7;return _index.fs.copy(templatePath, context, { clobber: false });case 7:(0, _fileWrapper.replaceFiles)({ appName: name }, ['src/manifest.json', 'package.json'].map(function (f) {return _path["default"].join(context, f);}));(0, _index.stopSpinner)();(0, _index.log)("\uD83D\uDCC4 Successfully Copy Files from ".concat(_index.chalk.yellow(templatePath), ".")); // log instructions
(0, _index.log)();(0, _index.log)("\uD83C\uDF89 Successfully created project ".concat(_index.chalk.yellow(name), "."));if (context === CWD) {// 如果小游戏工程的目录与当前执行目录一致,不显示cdTip
cdTip = '';} else {if (_path["default"].relative(CWD, context) === name) {cdTip = _index.chalk.cyan(" ".concat(_index.chalk.gray('$'), " cd ").concat(name, "\n ").concat(_index.chalk.gray('$'), " qg build\n ").concat(_index.chalk.gray('$'), " qg server\n"));} else {cdTip = _index.chalk.cyan(" ".concat(_index.chalk.gray('$'), " cd ").concat(context, "\n ").concat(_index.chalk.gray('$'), " qg build\n ").concat(_index.chalk.gray('$'), " qg server\n"));}}(0, _index.log)("\uD83D\uDC49 Get started with the following commands:\n\n" + cdTip);case 14:case "end":return _context2.stop();}}, _callee2);}));return _createImpl.apply(this, arguments);}var _default = exports["default"] = function _default() {return create.apply(void 0, arguments)["catch"](function (err) {
(0, _index.error)('Creat MiniGame Failed!');
throw err;
});
};