The code to determine the last-release is now in its own repository: https://github.com/semantic-release/last-release-npm One can overwrite that behavior by defining a "getLastRelease" plugin. This way one can decouple semantic-release from npm, e.g. by implementing a git-tag based version. This is already worked on: https://github.com/semantic-release/last-release-git-tag Closes #56
46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
const _ = require('lodash')
|
|
const auto = require('run-auto')
|
|
const semver = require('semver')
|
|
|
|
const getCommits = require('./lib/commits')
|
|
const getType = require('./lib/type')
|
|
|
|
module.exports = function (config, cb) {
|
|
const { plugins } = config
|
|
|
|
auto({
|
|
lastRelease: plugins.getLastRelease.bind(null, config),
|
|
commits: ['lastRelease', (cb, results) => {
|
|
getCommits(_.assign({
|
|
lastRelease: results.lastRelease
|
|
}, config),
|
|
cb)
|
|
}],
|
|
type: ['commits', 'lastRelease', (cb, results) => {
|
|
getType(_.assign({
|
|
commits: results.commits,
|
|
lastRelease: results.lastRelease
|
|
}, config),
|
|
cb)
|
|
}]
|
|
}, (err, results) => {
|
|
if (err) return cb(err)
|
|
|
|
const nextRelease = {
|
|
type: results.type,
|
|
version: results.type === 'initial' ?
|
|
'1.0.0' :
|
|
semver.inc(results.lastRelease.version, results.type)
|
|
}
|
|
|
|
plugins.verifyRelease(_.assign({
|
|
commits: results.commits,
|
|
lastRelease: results.lastRelease,
|
|
nextRelease
|
|
}, config), (err) => {
|
|
if (err) return cb(err)
|
|
cb(null, nextRelease)
|
|
})
|
|
})
|
|
}
|