t-comm
Version:
专业、稳定、纯粹的工具库
142 lines (137 loc) • 5.57 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var wecomRobot_optimizeRobotContent = require('../wecom-robot/optimize-robot-content.js');
var versionTip_config = require('./config.js');
var string_replaceAll = require('../string/replace-all.js');
/* eslint-disable @typescript-eslint/no-require-imports */
function optimizeContent(content) {
if (content === void 0) {
content = '';
}
return wecomRobot_optimizeRobotContent.optimizeRobotContent({
content: content,
maxLen: versionTip_config.MAX_CONTENT_LENGTH
});
}
function parseChangeLog(_a) {
var changelogStr = _a.changelogStr,
targetVersion = _a.targetVersion;
// 非大版本(1.0.0,2.0.0等),比如 1.1.1
// 不是第一个版本
var currentVersion = changelogStr.match(new RegExp("(?<=### \\[".concat(targetVersion, "\\].*\n).*?(?=\n##+ \\[?\\d+.\\d+.\\d+)"), 's'));
// 大版本
// 不是第一个版本
if (!(currentVersion === null || currentVersion === void 0 ? void 0 : currentVersion[0])) {
currentVersion = changelogStr.match(new RegExp("(?<=## \\[".concat(targetVersion, "\\].*\n).*?(?=\n##+ \\[?\\d+.\\d+.\\d+)"), 's'));
}
// changeLog 的另一种形式,lerna 生成的
if (!(currentVersion === null || currentVersion === void 0 ? void 0 : currentVersion[0])) {
changelogStr = changelogStr.replace(/<\/?small>/g, '');
currentVersion = changelogStr.match(new RegExp("(?<=## ".concat(targetVersion, ".*\n).*?(?=\n##+ ?\\d+.\\d+.\\d+)"), 's'));
}
// 非大版本
// 第一个版本
if (!(currentVersion === null || currentVersion === void 0 ? void 0 : currentVersion[0])) {
currentVersion = changelogStr.match(new RegExp("(?<=### ".concat(targetVersion, ".*\n).*"), 's'));
}
// 大版本
// 第一个版本
if (!(currentVersion === null || currentVersion === void 0 ? void 0 : currentVersion[0])) {
currentVersion = changelogStr.match(new RegExp("(?<=## ".concat(targetVersion, ".*\n).*"), 's'));
}
if (!(currentVersion === null || currentVersion === void 0 ? void 0 : currentVersion[0])) {
console.log("[GEN VERSION TIP] ERROR: NOT FOUND CHANGELOG INFO OF ".concat(targetVersion, " "));
return '';
}
var changelog = currentVersion[0].replace(/\n\*(\s.*)/g, function (a, b) {
return "\n-".concat(b);
});
return changelog;
}
function getChangeLog(_a) {
var targetVersion = _a.targetVersion,
changeLogFilePath = _a.changeLogFilePath;
var fs = require('fs');
if (!fs.existsSync(changeLogFilePath)) {
console.log("[GEN VERSION TIP] ERROR: NOT FOUND ".concat(changeLogFilePath, ". PLEASE GENERATE CHANGELOG. "));
return '';
}
var changelogStr = fs.readFileSync(changeLogFilePath, 'utf8');
return parseChangeLog({
changelogStr: changelogStr,
targetVersion: targetVersion
});
}
function generatePublishInfo(_a) {
var appName = _a.appName,
targetVersion = _a.version,
homepage = _a.homepage,
repoLink = _a.repoLink,
issueLink = _a.issueLink,
changeLogFilePath = _a.readmeFilePath,
_b = _a.showNpmLink,
showNpmLink = _b === void 0 ? false : _b;
string_replaceAll.replaceAllPolyfill();
var versionStr = "- \u7248\u672C\uFF1A<font color=\"comment\">".concat(targetVersion, "</font>\n");
var npmStr = showNpmLink ? "- npm: [".concat(appName, "](https://npmjs.com/package/").concat(appName, ")\n") : '';
var issueStr = issueLink ? "- issue: [".concat(issueLink, "](").concat(issueLink, ")\n") : '';
var pRepoLink = repoLink.replace(/^git\+/, '').replace(/\.git$/, '');
var repoStr = repoLink ? "- Git: [".concat(pRepoLink, "](").concat(pRepoLink, ")\n") : '';
var homepageStr = homepage ? "- \u6587\u6863\uFF1A[".concat(homepage, "](").concat(homepage, ")\n") : '';
var template = "### ".concat(appName, " \u66F4\u65B0\n\n\n\n").concat(versionStr).concat(npmStr).concat(repoStr).concat(issueStr).concat(homepageStr, "\n\n");
var changelog = getChangeLog({
targetVersion: targetVersion,
changeLogFilePath: changeLogFilePath
});
// @ts-ignore
var content = template.concat(changelog).replaceAll('###', '\n\n###');
return optimizeContent(content);
}
/**
* 生成版本信息,可以用来发送到群聊中
* @param {object} config 配置信息
* @param {string} config.readmeFilePath changelog文件地址
* @param {object} config.appInfo package.json信息
* @returns {string} 版本信息
* @example
*
* const appInfo = require(`${rootPath}/package.json`);
* const readmeFilePath = `${rootPath}/CHANGELOG.md`;
*
* const content = genVersionTip({
* readmeFilePath,
* appInfo,
* });
*/
function genVersionTip(_a) {
var readmeFilePath = _a.readmeFilePath,
appInfo = _a.appInfo,
_b = _a.showNpmLink,
showNpmLink = _b === void 0 ? false : _b;
var appName = appInfo.name,
version = appInfo.version,
_c = appInfo.homepage,
homepage = _c === void 0 ? '' : _c,
bugs = appInfo.bugs,
repository = appInfo.repository;
console.log('[GEN VERSION TIP] APP INFO VERSION:', version);
var issueLink = '';
var repoLink = '';
if (bugs === null || bugs === void 0 ? void 0 : bugs.url) {
issueLink = bugs.url;
}
if (repository === null || repository === void 0 ? void 0 : repository.url) {
repoLink = repository.url;
}
return generatePublishInfo({
showNpmLink: showNpmLink,
appName: appName,
version: version,
homepage: homepage,
repoLink: repoLink,
issueLink: issueLink,
readmeFilePath: readmeFilePath
});
}
exports.genVersionTip = genVersionTip;
exports.parseChangeLog = parseChangeLog;