69 lines
1.7 KiB
JavaScript
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
|
|
}
|