manual-git-changelog
Version:
A simple tool for appending to a changelog based on git commits and tags.
58 lines (57 loc) • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.insertIntoChangelog = exports.formatCommits = exports.getVersionText = exports.getVersionTitle = exports.getCommitUrl = exports.getRepoUrl = exports.getVersion = exports.getDefaultChangelogHeader = void 0;
// tslint:disable:no-var-requires
const getPkgRepo = require('get-pkg-repo');
function getDefaultChangelogHeader() {
return `# Changelog
All notable changes to this project will be documented in this file.
`;
}
exports.getDefaultChangelogHeader = getDefaultChangelogHeader;
function getVersion(packageJson) {
return JSON.parse(packageJson).version;
}
exports.getVersion = getVersion;
function getRepoUrl(packageJson) {
const repoData = getPkgRepo(JSON.parse(packageJson));
return repoData.browse();
}
exports.getRepoUrl = getRepoUrl;
function getCommitUrl(repoUrl, hash) {
return `${repoUrl}/commit/${hash}`;
}
exports.getCommitUrl = getCommitUrl;
function getVersionTitle(newVersion, previousVersion, repoUrl, date) {
return `## [${newVersion}]${previousVersion
? `(${repoUrl}/compare/${previousVersion}...${newVersion})` : ''} - ${date}`;
}
exports.getVersionTitle = getVersionTitle;
function getVersionText(newVersion, title, commits) {
return `<a name="${newVersion}"></a>
${title}
### TODO: categorize commits, choose titles from: Added, Changed, Deprecated, Removed, Fixed, Security.
${commits}
`;
}
exports.getVersionText = getVersionText;
function formatCommits(commits, repoUrl) {
return commits
.map((commit) => {
const i = commit.indexOf('-');
return [commit.substr(0, i), commit.substr(i + 1)];
})
.map(([hash, title]) => `* [${title}](${getCommitUrl(repoUrl, hash)})`)
.join('\n');
}
exports.formatCommits = formatCommits;
function insertIntoChangelog(changelogText, versionText) {
const firstEmptyLineIndex = changelogText.indexOf('\n\n');
if (firstEmptyLineIndex <= 0) {
throw new Error(`Found no required empty line in CHANGELOG.md to append into.`);
}
return changelogText.substr(0, firstEmptyLineIndex + 2)
+ versionText + '\n' + changelogText.substr(firstEmptyLineIndex + 2);
}
exports.insertIntoChangelog = insertIntoChangelog;
//# sourceMappingURL=ChangelogUtil.js.map