// 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