jgb-cli
Version:
```shell npm i -g jgb-cli #全局安装 ```
168 lines • 12 kB
JavaScript
;
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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