UNPKG

jgb-cli

Version:

```shell npm i -g jgb-cli #全局安装 ```

168 lines 12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var chalk_1 = require("chalk"); var crypto = require("crypto"); var downloadRepo = require("download-git-repo"); var fs = require("fs"); var inquirer = require("inquirer"); var Logger_1 = require("jgb-shared/lib/Logger"); var path = require("path"); var rimraf = require("rimraf"); var tildify = require("tildify"); var home = require("user-home"); var checkVersion_1 = require("../utils/checkVersion"); var generate_1 = require("../utils/generate"); function init(template, rawName, program) { return tslib_1.__awaiter(this, void 0, void 0, function () { function run() { return tslib_1.__awaiter(this, void 0, void 0, function () { var templatePath; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!isLocalPath(template)) return [3 /*break*/, 4]; templatePath = getTemplatePath(template); if (!fs.existsSync(templatePath)) return [3 /*break*/, 2]; return [4 /*yield*/, gen(templatePath)]; case 1: _a.sent(); return [3 /*break*/, 3]; case 2: Logger_1.logger.warning("Local template \"" + template + "\" not found."); _a.label = 3; case 3: return [3 /*break*/, 7]; case 4: return [4 /*yield*/, checkVersion_1.default()]; case 5: _a.sent(); return [4 /*yield*/, downloadAndGenerate()]; case 6: _a.sent(); _a.label = 7; case 7: return [2 /*return*/]; } }); }); } function downloadAndGenerate() { return tslib_1.__awaiter(this, void 0, void 0, function () { var _this = this; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: Logger_1.logger.info('downloading template ...'); if (!fs.existsSync(tmp)) return [3 /*break*/, 2]; return [4 /*yield*/, new Promise(function (resolve) { rimraf(tmp, resolve); })]; case 1: _a.sent(); _a.label = 2; case 2: return [2 /*return*/, new Promise(function (resolve) { Logger_1.logger.info("template: " + template); downloadRepo(template, tmp, { clone: clone }, function (err) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (err) { Logger_1.logger.error('Failed to download repo ' + template + ': ' + err.message.trim()); return [2 /*return*/, resolve()]; } return [4 /*yield*/, gen(tmp)]; case 1: _a.sent(); resolve(); return [2 /*return*/]; } }); }); }); })]; } }); }); } function gen(templatePath) { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { generate_1.default(name, templatePath, to, function (err) { if (err) { Logger_1.logger.error(err); } console.log(); Logger_1.logger.info("Generated \"" + name + "\"."); }); return [2 /*return*/]; }); }); } var inPlace, name, to, clone, offline, tmp; var _this = this; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: inPlace = !rawName || rawName === '.'; name = inPlace ? path.relative('../', process.cwd()) : rawName; to = path.resolve(rawName || '.'); clone = program.clone || false; offline = program.offline || false; tmp = path.join(home, '.jgb_templates', md5(template)); /** * use offline cache */ if (offline) { console.log("> Use cached template at " + chalk_1.default.yellow(tildify(tmp))); template = tmp; } if (!fs.existsSync(to)) return [3 /*break*/, 1]; inquirer .prompt([ { type: 'confirm', message: inPlace ? 'Generate project in current directory?' : 'Target directory exists. Continue?', name: 'ok' } ]) .then(function (answers) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!answers.ok) return [3 /*break*/, 2]; return [4 /*yield*/, run()]; case 1: _a.sent(); _a.label = 2; case 2: return [2 /*return*/]; } }); }); }) .catch(); return [3 /*break*/, 3]; case 1: return [4 /*yield*/, run()]; case 2: _a.sent(); _a.label = 3; case 3: return [2 /*return*/]; } }); }); } exports.default = init; function isLocalPath(templatePath) { // templatePath example: // .jgb_templates // E:\workspace\jgb_templates\standard return /^[./]|(^[a-zA-Z]:)/.test(templatePath); } function getTemplatePath(templatePath) { return path.isAbsolute(templatePath) ? templatePath : path.normalize(path.join(process.cwd(), templatePath)); } function md5(str) { var hash = crypto.createHash('md5'); hash.update(str); return hash.digest('hex'); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kL2luaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQTBCO0FBQzFCLCtCQUFpQztBQUNqQyxnREFBa0Q7QUFDbEQsdUJBQXlCO0FBQ3pCLG1DQUFxQztBQUNyQyxnREFBK0M7QUFDL0MsMkJBQTZCO0FBQzdCLCtCQUFpQztBQUNqQyxpQ0FBbUM7QUFDbkMsZ0NBQWtDO0FBQ2xDLHNEQUFpRDtBQUNqRCw4Q0FBeUM7QUFFekMsU0FBOEIsSUFBSSxDQUNoQyxRQUFnQixFQUNoQixPQUFlLEVBQ2YsT0FBWTs7UUFxQ1osU0FBZSxHQUFHOzs7Ozs7aUNBQ1osV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFyQix3QkFBcUI7NEJBQ2pCLFlBQVksR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7aUNBQzNDLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQTNCLHdCQUEyQjs0QkFDN0IscUJBQU0sR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFBOzs0QkFBdkIsU0FBdUIsQ0FBQzs7OzRCQUV4QixlQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFtQixRQUFRLGtCQUFjLENBQUMsQ0FBQzs7O2dDQUc1RCxxQkFBTSxzQkFBWSxFQUFFLEVBQUE7OzRCQUFwQixTQUFvQixDQUFDOzRCQUNyQixxQkFBTSxtQkFBbUIsRUFBRSxFQUFBOzs0QkFBM0IsU0FBMkIsQ0FBQzs7Ozs7O1NBRS9CO1FBRUQsU0FBZSxtQkFBbUI7Ozs7Ozs0QkFDaEMsZUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO2lDQUVwQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFsQix3QkFBa0I7NEJBQ3BCLHFCQUFNLElBQUksT0FBTyxDQUFDLFVBQUEsT0FBTztvQ0FDdkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztnQ0FDdkIsQ0FB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