diff --git a/package.json b/package.json index 9a1dcf0c..9e0239ef 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "nyc": { "exclude": [ ".test", - "node_modules" + "node_modules", + "dist/lib/error.js" ] } }, diff --git a/src/lib/error.js b/src/lib/error.js new file mode 100644 index 00000000..24d9e2ee --- /dev/null +++ b/src/lib/error.js @@ -0,0 +1,6 @@ +module.exports = class SemanticReleaseError extends Error { + constructor (message, code) { + super(message) + this.code = code + } +} diff --git a/src/lib/type.js b/src/lib/type.js new file mode 100644 index 00000000..81640dde --- /dev/null +++ b/src/lib/type.js @@ -0,0 +1,19 @@ +const SemanticReleaseError = require('./error') + +module.exports = function (plugins, results, cb) { + const commits = results.commits + const lastRelease = results.lastRelease + + const type = plugins.analyze(commits) + + if (!type) { + return cb(new SemanticReleaseError( + 'There are no relevant changes, so no new version is released', + 'ENOCHANGE' + )) + } + + if (!lastRelease.version) return cb(null, 'initial') + + cb(null, type) +}