1 | var auto = require('run-auto')
|
2 | var semver = require('semver')
|
3 |
|
4 | var getCommits = require('./lib/commits')
|
5 | var getType = require('./lib/type')
|
6 |
|
7 | module.exports = function (config, cb) {
|
8 | var plugins = config.plugins
|
9 |
|
10 | auto({
|
11 | lastRelease: plugins.getLastRelease.bind(null, config),
|
12 | commits: ['lastRelease', function (results, cb) {
|
13 | getCommits(Object.assign({
|
14 | lastRelease: results.lastRelease
|
15 | }, config),
|
16 | cb)
|
17 | }],
|
18 | type: ['commits', 'lastRelease', function (results, cb) {
|
19 | getType(Object.assign({
|
20 | commits: results.commits,
|
21 | lastRelease: results.lastRelease
|
22 | }, config),
|
23 | cb)
|
24 | }]
|
25 | }, function (err, results) {
|
26 | if (err) return cb(err)
|
27 |
|
28 | var nextRelease = {
|
29 | type: results.type,
|
30 | version: results.type === 'initial'
|
31 | ? '1.0.0'
|
32 | : semver.inc(results.lastRelease.version, results.type)
|
33 | }
|
34 |
|
35 | plugins.verifyRelease(Object.assign({
|
36 | commits: results.commits,
|
37 | lastRelease: results.lastRelease,
|
38 | nextRelease: nextRelease
|
39 | }, config), function (err) {
|
40 | if (err) return cb(err)
|
41 | cb(null, nextRelease)
|
42 | })
|
43 | })
|
44 | }
|