@jwpkg/gitversion
Version:
Gitversion is a complete customizable git-based release management system
127 lines (125 loc) • 9.47 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.detectChangelog = detectChangelog;
exports.addToChangelog = addToChangelog;
exports.parseChangelog = parseChangelog;
exports.generateChangeLogEntry = generateChangeLogEntry;
exports.renderCommit = renderCommit;
exports.groupByType = groupByType;
const conventional_commmit_utils_1 = require("./conventional-commmit-utils");
const md = __importStar(require("./markdown"));
const HEADER = `
# Changelog
All notable changes to this project will be documented in this file
`;
async function detectChangelog(application, relativeCwd, from, to) {
const logs = await application.git.logs(from.hash, relativeCwd);
const commits = (0, conventional_commmit_utils_1.parseConventionalCommits)(logs, application.gitPlatform);
return generateChangeLogEntry(commits, from, to, application.pluginManager);
}
function addToChangelog(entry, changelogContent) {
const entries = [entry];
if (changelogContent) {
const allEntries = parseChangelog(changelogContent);
entries.push(...allEntries.filter(e => e.version !== entry.version));
}
return [
HEADER,
...entries.map(e => `${e.headerLine.trim()}\n\n${e.body.trim()}\n`),
].join('\n');
}
function parseChangelog(changelogContent) {
const result = [];
let current;
const lines = changelogContent.split('\n');
for (let i = 0; i < lines.length; i++) {
if (lines[i].startsWith('## ')) {
if (current)
result.push(current);
current = undefined;
const parsedHeader = /##\s\[([a-zA-Z0-9-.]+)\]/.exec(lines[i]);
if (parsedHeader) {
current = {
headerLine: lines[i],
version: parsedHeader[1],
body: '',
};
}
}
else {
if (current) {
current.body = `${current.body}\n${lines[i]}`;
}
}
}
if (current)
result.push(current);
return result;
}
function generateChangeLogEntry(commits, from, to, renderer) {
const compareUrl = renderer.renderCompareUrl(from, to);
return {
headerLine: md.h2(compareUrl ? md.link(to.version, compareUrl) : `[${to.version}]`, `(${new Date().toDateString()})`),
version: to.version,
body: [...Object.entries(groupByType(commits)).map(([type, commits]) => [
md.h3(type),
...commits.map(commit => renderCommit(commit, renderer)),
].join('\n')),
].join('\n'),
};
}
function renderCommit(commit, renderer) {
const commitUrl = renderer.renderCommitUrl(commit.hash);
if (commit.scope) {
return md.li(md.b(commit.scope), commit.message, `(${commitUrl ? md.link(commit.shortHash, commitUrl) : commit.shortHash})`);
}
else {
return md.li(commit.message, `(${commitUrl ? md.link(commit.shortHash, commitUrl) : commit.shortHash})`);
}
}
function groupByType(commits) {
const result = {};
commits.forEach(commit => {
if (!result[commit.type]) {
result[commit.type] = [commit];
}
else {
result[commit.type].push(commit);
}
});
return result;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvY2hhbmdlbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLDBDQUtDO0FBRUQsd0NBVUM7QUFFRCx3Q0EyQkM7QUFFRCx3REFlQztBQUVELG9DQU9DO0FBRUQsa0NBVUM7QUFyR0QsNkVBQTRGO0FBQzVGLCtDQUFpQztBQUdqQyxNQUFNLE1BQU0sR0FBRzs7Ozs7Q0FLZCxDQUFDO0FBUUssS0FBSyxVQUFVLGVBQWUsQ0FBQyxXQUF5QixFQUFFLFdBQW1CLEVBQUUsSUFBa0IsRUFBRSxFQUFnQjtJQUN4SCxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFaEUsTUFBTSxPQUFPLEdBQUcsSUFBQSxxREFBd0IsRUFBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sc0JBQXNCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsS0FBcUIsRUFBRSxnQkFBeUI7SUFDN0UsTUFBTSxPQUFPLEdBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsT0FBTztRQUNMLE1BQU07UUFDTixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0tBQ3BFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxnQkFBd0I7SUFDckQsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztJQUNwQyxJQUFJLE9BQW1DLENBQUM7SUFFeEMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsSUFBSSxPQUFPO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUNwQixNQUFNLFlBQVksR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxHQUFHO29CQUNSLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQixPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDeEIsSUFBSSxFQUFFLEVBQUU7aUJBQ1QsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsT0FBNkIsRUFBRSxJQUFrQixFQUFFLEVBQWdCLEVBQUUsUUFBbUM7SUFDN0ksTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV2RCxPQUFPO1FBQ0wsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQ2YsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUNoRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FDakM7UUFDRCxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU87UUFDbkIsSUFBSSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdEUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN6RCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNaLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztLQUNiLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLE1BQTBCLEVBQUUsUUFBbUM7SUFDMUYsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDL0gsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUMzRyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxPQUE2QjtJQUN2RCxNQUFNLE1BQU0sR0FBeUMsRUFBRSxDQUFDO0lBQ3hELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIn0=