From a4fe18cadeb05a48bf8d64eeaadfe741d9a993bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6nnemann?= Date: Sun, 14 Jun 2015 21:16:26 -0700 Subject: [PATCH] feat(pre): plugging last-release, commits and type together --- package.json | 3 ++- src/pre.js | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/pre.js diff --git a/package.json b/package.json index 9e0239ef..6bb44135 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "dependencies": { "npm-registry-client": "^6.4.0", "npmconf": "^2.1.2", - "npmlog": "^1.2.1" + "npmlog": "^1.2.1", + "run-auto": "^1.1.2" }, "devDependencies": { "babel": "^5.5.8", diff --git a/src/pre.js b/src/pre.js new file mode 100644 index 00000000..7e0b1372 --- /dev/null +++ b/src/pre.js @@ -0,0 +1,34 @@ +const auto = require('run-auto') +const semver = require('semver') + +const getLastRelease = require('./lib/last-release') +const getCommits = require('./lib/commits') +const getType = require('./lib/type') + +module.exports = function (pkg, npmConfig, plugins, cb) { + auto({ + lastRelease: getLastRelease.bind(null, pkg, npmConfig), + commits: ['lastRelease', (cb, results) => { + getCommits(results.lastRelease, cb) + }], + type: ['commits', 'lastRelease', (cb, results) => { + getType(plugins, results.commits, results.lastRelease, cb) + }] + }, (err, results) => { + if (err) return cb(err) + + const nextRelease = { + type: results.type, + commits: results.commits, + lastVersion: results.lastRelease.version, + version: results.type === 'initial' ? + '1.0.0' : + semver.inc(results.lastRelease.version, results.type) + } + + plugins.verify(nextRelease, (err) => { + if (err) return cb(err) + cb(null, nextRelease) + }) + }) +}