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) + }) + }) +}