UNPKG

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
"use strict"; 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