mirror of
https://github.com/morhetz/gruvbox.git
synced 2025-11-17 07:43:38 -05:00
90 lines
2.2 KiB
JavaScript
90 lines
2.2 KiB
JavaScript
'use strict';
|
|
var concat = require('concat-stream');
|
|
var conventionalCommitsFilter = require('conventional-commits-filter');
|
|
var conventionalCommitsParser = require('conventional-commits-parser');
|
|
var gitSemverTags = require('git-semver-tags');
|
|
var gitRawCommits = require('git-raw-commits');
|
|
var objectAssign = require('object-assign');
|
|
|
|
var VERSIONS = ['major', 'minor', 'patch'];
|
|
|
|
function conventionalRecommendedBump(options, parserOpts, cb) {
|
|
var config;
|
|
var noop = function() {};
|
|
|
|
if (typeof options !== 'object') {
|
|
throw new TypeError('options must be an object');
|
|
}
|
|
|
|
if (typeof parserOpts === 'function') {
|
|
cb = parserOpts;
|
|
} else {
|
|
cb = cb || noop;
|
|
}
|
|
|
|
options = objectAssign({
|
|
ignoreReverted: true,
|
|
warn: function() {}
|
|
}, options);
|
|
|
|
if (options.preset) {
|
|
try {
|
|
config = require('./presets/' + options.preset);
|
|
} catch (err) {
|
|
cb(new Error('Preset: "' + options.preset + '" does not exist'));
|
|
return;
|
|
}
|
|
} else {
|
|
config = options.config || {};
|
|
}
|
|
|
|
var whatBump = options.whatBump || config.whatBump || noop;
|
|
parserOpts = objectAssign({}, config.parserOpts, parserOpts);
|
|
parserOpts.warn = parserOpts.warn || options.warn;
|
|
|
|
gitSemverTags(function(err, tags) {
|
|
if (err) {
|
|
cb(err);
|
|
return;
|
|
}
|
|
|
|
gitRawCommits({
|
|
format: '%B%n-hash-%n%H',
|
|
from: tags[0] || '',
|
|
path: options.path
|
|
})
|
|
.pipe(conventionalCommitsParser(parserOpts))
|
|
.pipe(concat(function(data) {
|
|
var commits;
|
|
|
|
if (options.ignoreReverted) {
|
|
commits = conventionalCommitsFilter(data);
|
|
} else {
|
|
commits = data;
|
|
}
|
|
|
|
if (!commits || !commits.length) {
|
|
options.warn('No commits since last release');
|
|
}
|
|
|
|
var result = whatBump(commits);
|
|
|
|
if (typeof result === 'number') {
|
|
result = {
|
|
level: result
|
|
};
|
|
}
|
|
|
|
if (result && result.level != null) {
|
|
result.releaseType = VERSIONS[result.level];
|
|
} else if (result == null) {
|
|
result = {};
|
|
}
|
|
|
|
cb(null, result);
|
|
}));
|
|
}, {lernaTags: !!options.lernaPackage, package: options.lernaPackage, tagPrefix: options.tagPrefix});
|
|
}
|
|
|
|
module.exports = conventionalRecommendedBump;
|