From a405021d08b1ebf8b2a4abd51031be0812a689dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6nnemann?= Date: Sun, 14 Jun 2015 19:40:05 -0700 Subject: [PATCH] feat(type): initial functionality --- package.json | 3 ++- src/lib/error.js | 6 ++++++ src/lib/type.js | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/lib/error.js create mode 100644 src/lib/type.js 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) +}