54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
// Bumps a specified style's version
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
/**
|
|
* @function bump
|
|
* @param {string} jsonPath - Path to the .json file
|
|
* @param {string} incrementType - Which semver type to increment: "major", "minor" or "patch"
|
|
*/
|
|
|
|
function bump(jsonPath, incrementType) {
|
|
if (!fs.existsSync(jsonPath))
|
|
throw Error(`File ${jsonPath} does not exist.`);
|
|
if (path.extname(jsonPath) !== '.json')
|
|
throw Error(`File ${jsonPath} does not end in "json".`);
|
|
if (typeof incrementType === 'undefined')
|
|
throw Error('No valid increment type was included. Valid: "major", "minor" or "patch".');
|
|
if (incrementType !== 'major' && incrementType !== 'minor' && incrementType !== 'patch')
|
|
throw Error(`Increment type ${incrementType} does not equal "major", "minor" or "patch".`);
|
|
|
|
const jsonFile = require(jsonPath);
|
|
|
|
if (typeof jsonFile.options.version === 'undefined')
|
|
throw Error(`${jsonFile} does not include a "version" property.`);
|
|
|
|
const incrementTypes = {
|
|
'major': 0,
|
|
'minor': 1,
|
|
'patch': 2,
|
|
};
|
|
|
|
const oldVersion = jsonFile.options.version.split('.');
|
|
let bumped = parseInt(oldVersion[incrementTypes[incrementType]]) + 1;
|
|
let newVersion;
|
|
switch (incrementType) {
|
|
case 'major':
|
|
newVersion = `${bumped}.0.0`;
|
|
break;
|
|
case 'minor':
|
|
newVersion = `${oldVersion[0]}.${bumped}.0`;
|
|
break;
|
|
case 'patch':
|
|
newVersion = `${oldVersion[0]}.${oldVersion[1]}.${bumped}`;
|
|
break;
|
|
}
|
|
|
|
jsonFile.options.version = newVersion;
|
|
|
|
fs.writeFileSync(jsonPath, JSON.stringify(jsonFile, null, 2));
|
|
}
|
|
|
|
exports.bump = bump;
|