From 323b5d5bf806866642b64243ec1cacc1c6acd828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6nnemann?= Date: Fri, 24 Apr 2015 15:52:54 +0200 Subject: [PATCH] feat(post): custom release note generation --- bin/semantic-release.js | 2 +- lib/release-notes.js | 17 +++++++++++++++++ src/post.js | 12 ++++-------- 3 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 lib/release-notes.js diff --git a/bin/semantic-release.js b/bin/semantic-release.js index ed8c411b..93a6ecf3 100755 --- a/bin/semantic-release.js +++ b/bin/semantic-release.js @@ -68,7 +68,7 @@ if (~argv._.indexOf('pre')) { } if (~argv._.indexOf('post')) { - require('../src/post')(argv, efh(function () { + require('../src/post')(argv, plugins, efh(function () { // see src/restart.js if (npmArgv['semantic-release-rerun']) { console.log('Everything is alright :) npm will now print an error message that you can safely ignore.') diff --git a/lib/release-notes.js b/lib/release-notes.js new file mode 100644 index 00000000..d1772982 --- /dev/null +++ b/lib/release-notes.js @@ -0,0 +1,17 @@ +'use strict' + +var readFile = require('fs').readFileSync + +var changelog = require('conventional-changelog') +var parseUrl = require('github-url-from-git') + +module.exports = function (cb) { + var pkg = JSON.parse(readFile('./package.json')) + var repository = pkg.repository ? parseUrl(pkg.repository.url) : null + + changelog({ + version: pkg.version, + repository: repository, + file: false + }, cb) +} diff --git a/src/post.js b/src/post.js index b166f934..5a3887fb 100644 --- a/src/post.js +++ b/src/post.js @@ -3,20 +3,20 @@ var readFile = require('fs').readFileSync var url = require('url') -var changelog = require('conventional-changelog') var gitHead = require('git-head') var GitHubApi = require('github') var parseSlug = require('parse-github-repo-url') -var parseUrl = require('github-url-from-git') var efh = require('../lib/error').efh -module.exports = function (options, cb) { +module.exports = function (options, plugins, cb) { var pkg = JSON.parse(readFile('./package.json')) var repository = pkg.repository ? pkg.repository.url : null if (!repository) return cb(new Error('Package must have a repository')) + var notesGenerator = require(plugins.notes || '../lib/release-notes') + var config = options['github-url'] ? url.parse(options['github-url']) : {} var github = new GitHubApi({ @@ -26,11 +26,7 @@ module.exports = function (options, cb) { host: config.hostname }) - changelog({ - version: pkg.version, - repository: parseUrl(repository), - file: false - }, efh(cb)(function (log) { + notesGenerator(efh(cb)(function (log) { gitHead(efh(cb)(function (hash) { var ghRepo = parseSlug(repository) var release = {