UNPKG

git-newtag

Version:

根据配置规则自动生成新的tag推送到远端git

72 lines (70 loc) 2.54 kB
'use strict'; var path = require("path"); var fs = require("fs"); var exit = require("process").exit; var simpleGit = require("simple-git").simpleGit; var dayjs = require("dayjs"); var ntConfigPath = path.join(process.cwd(), "nt.config.js"); var ntConfigContent = fs.readFileSync(ntConfigPath, "utf8"); var ntConfig = { tagHead: "release-online", versionName: "v", }; try { var evalObject = eval(ntConfigContent); if (typeof evalObject !== "object") { throw new Error("🚨 nt.config.js 解析出错"); } ntConfig = evalObject; } catch (error) { console.error(error); exit(0); } var _a = ntConfig.tagHead, tagHead = _a === void 0 ? "release-online" : _a, _b = ntConfig.versionName, versionName = _b === void 0 ? "v" : _b, tagMessage = ntConfig.tagMessage; var message = tagMessage || process.argv[2]; function getNewTag(tagList) { function getLastDate(tag) { var lastDate = tag.match(/\d{1,4}-\d{1,2}-\d{1,2}/g)[0]; lastDate = lastDate.split("-")[0].length < 4 ? "20".concat(lastDate) : lastDate; return lastDate; } var version = 1; var today = dayjs().format("YYYY-MM-DD"); var lastTag = tagList.sort(function (a, b) { var target = +dayjs(getLastDate(b)) - +dayjs(getLastDate(a)); if (target === 0) { return (+b.toLowerCase().split("-".concat(versionName))[1] - +a.toLowerCase().split("-".concat(versionName))[1]); } return target; })[0]; if (lastTag) { if (dayjs(getLastDate(lastTag)).format("YYYY-MM-DD") === today) { version = +lastTag.toLowerCase().split("-".concat(versionName))[1] + 1; } } return "".concat(tagHead, "-").concat(today, "-").concat(versionName).concat(version); } var options = { baseDir: process.cwd(), binary: "git", maxConcurrentProcesses: 6, trimmed: false, }; // when setting all options in a single object var git = simpleGit(options); git.pull().tags(function (err, tags) { var tagList = []; (tags.all || []).forEach(function (item) { if (new RegExp("^".concat(tagHead)).test(item)) { tagList.push(item); } }); var newtag = getNewTag(tagList); git.addAnnotatedTag(newtag, message || "", function () { console.log("\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80 new tag name: ".concat(newtag, " \uD83D\uDE80\uD83D\uDE80\uD83D\uDE80")); git.pushTags(); console.log("\u2728\u2728\u2728 \u53D1\u5E03\u5B8C\u6BD5 \u2728\u2728\u2728"); }); });