conventional-changelog-action/src/helpers/bumpVersion.js

69 lines
1.7 KiB
JavaScript

const core = require('@actions/core')
const semverValid = require('semver').valid
const requireScript = require('./requireScript')
/**
* Bumps the given version with the given release type
*
* @param releaseType
* @param version
* @returns {string}
*/
module.exports = async (releaseType, version) => {
let major, minor, patch
if (version) {
[major, minor, patch] = version.split('.')
switch (releaseType) {
case 'major':
major = parseInt(major, 10) + 1
minor = 0
patch = 0
break
case 'minor':
minor = parseInt(minor, 10) + 1
patch = 0
break
default:
patch = parseInt(patch, 10) + 1
}
} else {
let version = semverValid(core.getInput('fallback-version'))
if (version) {
[major, minor, patch] = version.split('.')
} else {
// default
major = 0
minor = 1
patch = 0
}
core.info(`The version could not be detected, using fallback version '${major}.${minor}.${patch}'.`)
}
const preChangelogGenerationFile = core.getInput('pre-changelog-generation')
let newVersion = `${major}.${minor}.${patch}`
if (preChangelogGenerationFile) {
const preChangelogGenerationScript = requireScript(preChangelogGenerationFile)
// Double check if we want to update / do something with the version
if (preChangelogGenerationScript && preChangelogGenerationScript.preVersionGeneration) {
const modifiedVersion = await preChangelogGenerationScript.preVersionGeneration(newVersion)
if (modifiedVersion) {
core.info(`Using modified version "${modifiedVersion}"`)
newVersion = modifiedVersion
}
}
}
return newVersion
}