UNPKG

994 BJavaScriptView Raw
1'use strict';
2
3var semver = require('semver');
4var clone = require('lodash.clone');
5
6module.exports = function(options, cb) {
7 var opts = clone(options);
8 opts.key = opts.key || 'version';
9
10 var regex = opts.regex || new RegExp(
11 '([\'|\"]?' + opts.key + '[\'|\"]?[ ]*:[ ]*[\'|\"]?)(\\d+\\.\\d+\\.\\d+(-' +
12 opts.preid +
13 '\\.\\d+)?(-\\d+)?)[\\d||A-a|.|-]*([\'|\"]?)', 'i');
14
15 if (opts.global) {
16 regex = new RegExp(regex.source, 'gi');
17 }
18
19 var parsedOut;
20 opts.str = opts.str.replace(regex, function(match, prefix, parsed, pre, nopre, suffix) {
21 parsedOut = parsed;
22 if (!semver.valid(parsed) && !opts.version) {
23 return cb('Invalid semver ' + parsed);
24 }
25 opts.type = opts.type || 'patch';
26 var version = opts.version || semver.inc(parsed, opts.type, opts.preid);
27 opts.prev = parsed;
28 opts.new = version;
29 return prefix + version + (suffix || '');
30 });
31
32 if (!parsedOut) {
33 return cb('Invalid semver');
34 }
35
36 return cb(null, opts);
37};
38