diff --git a/CHANGELOG.md b/CHANGELOG.md index acff370..335f9db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# Change Log + +All notable changes to this project will be documented in this file +automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY! +This project adheres to [Semantic Versioning](http://semver.org/). + +## v2.8.4 - 2017-07-27 + +* Add versionist config [John (Jack) Brown] + # 2.8.3 * Update node to 6.11.1 diff --git a/versionist.conf.js b/versionist.conf.js new file mode 100644 index 0000000..b5364b8 --- /dev/null +++ b/versionist.conf.js @@ -0,0 +1,64 @@ +'use strict'; + +const execSync = require('child_process').execSync; + +const getAuthor = (commitHash) => { + return execSync(`git show --quiet --format="%an" ${commitHash}`, { + encoding: 'utf8' + }).replace('\n', ''); +}; + +module.exports = { + // This setup allows the editing and parsing of footer tags to get version and type information, + // as well as ensuring tags of the type 'v..' are used. + // It increments in a semver compatible fashion. + editChangelog: true, + parseFooterTags: true, + getGitReferenceFromVersion: 'v-prefix', + incrementVersion: 'semver', + editVersion: false, + + // Always add the entry to the top of the Changelog, below the header. + addEntryToChangelog: { + preset: 'prepend', + fromLine: 6 + }, + + // Only include a commit when there is a footer tag of 'change-type'. + // Ensures commits which do not up versions are not included. + includeCommitWhen: (commit) => { + return !!commit.footer['change-type']; + }, + + // Determine the type from 'change-type:' tag. + // Should no explicit change type be made, then no changes are assumed. + getIncrementLevelFromCommit: (commit) => { + if (commit.footer['change-type']) { + return commit.footer['change-type'].trim(); + } + }, + + // If a 'changelog-entry' tag is found, use this as the subject rather than the + // first line of the commit. + transformTemplateData: (data) => { + data.commits.forEach((commit) => { + commit.subject = commit.footer['changelog-entry'] || commit.subject; + commit.author = getAuthor(commit.hash); + }); + + return data; + }, + + template: [ + '## v{{version}} - {{moment date "Y-MM-DD"}}', + '', + '{{#each commits}}', + '{{#if this.author}}', + '* {{capitalize this.subject}} [{{this.author}}]', + '{{else}}', + '* {{capitalize this.subject}}', + '{{/if}}', + '{{/each}}' + ].join('\n') +}; +