From f72fe0e81a6ff4cf83a477e2a69cd381f8e55054 Mon Sep 17 00:00:00 2001 From: Anson Wayman Date: Wed, 15 Jul 2015 15:28:31 -0600 Subject: [PATCH] Fixed the semver stuff in #17 and took into account beta releases as per #15 --- bin/versionbumper.js | 77 ++++++++++++++++++++++++++++++++++---- index.js | 16 +++++++- test/versionbumpertests.js | 28 +++++++++++++- 3 files changed, 109 insertions(+), 12 deletions(-) diff --git a/bin/versionbumper.js b/bin/versionbumper.js index 0c3ba39..11164cb 100644 --- a/bin/versionbumper.js +++ b/bin/versionbumper.js @@ -1,29 +1,90 @@ exports = module.exports = {} -exports.bumpPatch = function(version){ +exports.bumpPatch = function(version) +{ var stringarray = version.split("."); - var patchnumber = Number(stringarray[2]); + var patchnumber = parseInt(stringarray[2]); patchnumber = patchnumber+1; var result = (stringarray[0]+"."+stringarray[1]+"."+patchnumber); return result; } -exports.bumpMinor = function(version){ +exports.bumpMinor = function(version) +{ var stringarray = version.split("."); - var patchnumber = Number(stringarray[1]); + var patchnumber = parseInt(stringarray[1]); patchnumber = patchnumber+1; - var result = (stringarray[0]+"."+patchnumber+"."+stringarray[2]); + var result = (stringarray[0]+"."+patchnumber+".0"); return result; } -exports.bumpMajor = function(version){ +exports.bumpMajor = function(version) +{ var stringarray = version.split("."); - var patchnumber = Number(stringarray[0]); + var patchnumber = parseInt(stringarray[0]); patchnumber = patchnumber+1; - var result = (patchnumber+"."+stringarray[1]+"."+stringarray[2]); + var result = (patchnumber+".0.0"); return result; } +exports.bumpAlpha = function(version) +{ + if (version.indexOf("beta") > -1) + { + return version; + } + else + if (version.indexOf("alpha") > -1) + { + var stringarray = version.split("."); + var patchnumber; + if (stringarray.length > 3) + { + patchnumber = parseInt(stringarray[3]); + patchnumber = patchnumber + 1; + } + else + { + patchnumber = 1; + } + return stringarray[0]+"."+stringarray[1]+"."+stringarray[2]+"."+patchnumber; + } + else + { + return version+"-alpha.1"; + } +} + +exports.bumpBeta = function(version) +{ + var testVersion = version; + + if (testVersion.indexOf("alpha") > -1) + { + var tempArray = testVersion.split("."); + testVersion = parseInt(tempArray[0])+"."+parseInt(tempArray[1])+"."+parseInt(tempArray[2]); + } + + if (testVersion.indexOf("beta") > -1) + { + var stringarray = testVersion.split("."); + var patchnumber; + if (stringarray.length > 3) + { + patchnumber = parseInt(stringarray[3]); + patchnumber = patchnumber + 1; + } + else + { + patchnumber = 1; + } + return stringarray[0]+"."+stringarray[1]+"."+stringarray[2]+"."+patchnumber; + } + else + { + return testVersion+"-beta.1"; + } +} \ No newline at end of file diff --git a/index.js b/index.js index a21c759..e4849bb 100644 --- a/index.js +++ b/index.js @@ -10,6 +10,8 @@ versionIO.readVersion('package.json',function(version) { program .version('0.0.1') + .option('-a , --alpha', 'Bump alpha') + .option('-b , --beta', 'Bump beta') .option('-M , --major', 'Bump major') .option('-m , --minor', 'Bump minor') .option('-p , --patch', 'Bump patch') @@ -22,16 +24,26 @@ if (program.major) { packageversion = versionbumper.bumpMajor(packageversion); } - +else if (program.minor) { packageversion = versionbumper.bumpMinor(packageversion); } - +else if (program.patch) { packageversion = versionbumper.bumpPatch(packageversion); } +else +if (program.beta) +{ + packageversion = versionbumper.bumpBeta(packageversion); +} +else +if (program.alpha) +{ + packageversion = versionbumper.bumpAlpha(packageversion); +} if (program.major || program.minor || program.patch) { diff --git a/test/versionbumpertests.js b/test/versionbumpertests.js index 2cf68e8..fbe0b5a 100644 --- a/test/versionbumpertests.js +++ b/test/versionbumpertests.js @@ -12,7 +12,7 @@ describe("versionbumper", function(){ }); describe("#bumpMinor()", function(){ it("should bump up the second value in the string passed in.", function(){ - var arg = "1.0.0"; + var arg = "1.0.1"; var result = versionbumper.bumpMinor(arg); expect(result).to.equal("1.1.0"); @@ -20,10 +20,34 @@ describe("versionbumper", function(){ }); describe("#bumpMajor()", function(){ it("should bump up the first value in the string passed in.", function(){ - var arg = "1.0.0"; + var arg = "1.2.3"; var result = versionbumper.bumpMajor(arg); expect(result).to.equal("2.0.0"); }); }); + describe("#bumpAlpha()", function(){ + it("should bump up the alpha value in the string passed in.", function(){ + var arg = "2.0.0"; + var result = versionbumper.bumpAlpha(arg); + + expect(result).to.equal("2.0.0-alpha.1"); + + var result2 = versionbumper.bumpAlpha(result); + + expect(result2).to.equal("2.0.0-alpha.2"); + }); + }); + describe("#bumpBeta()", function(){ + it("should bump up the alpha value in the string passed in.", function(){ + var arg = "2.0.0-alpha.1"; + var result = versionbumper.bumpBeta(arg); + + expect(result).to.equal("2.0.0-beta.1"); + + var result2 = versionbumper.bumpBeta(result); + + expect(result2).to.equal("2.0.0-beta.2"); + }); + }); }); \ No newline at end of file