I wrote a bash function that takes a semantic version string and bumps the version number. It supports all 3 layers. I needed it for the deploy script I was working on. It’s fairly trivial, I just thought I would share it.
Semantic versioning is a 3 number version string consisting of a major, minor, and revision number. This function allows you to bump any one of those numbers and reset the earlier numbers. Semantic versioning tends to be a fairly popular scheme and is mandatory for certain frameworks like WordPress.
# $1 - semver string
# $2 - level to incr {release,minor,major} - release by default
function incr_semver() {
IFS='.' read -ra ver <<< "$1"
[[ "${#ver[@]}" -ne 3 ]] && echo "Invalid semver string" && return 1
[[ "$#" -eq 1 ]] && level='release' || level=$2
release=${ver[2]}
minor=${ver[1]}
major=${ver[0]}
case $level in
release)
release=$((release+1))
;;
minor)
release=0
minor=$((minor+1))
;;
major)
release=0
minor=0
major=$((major+1))
;;
*)
echo "Invalid level passed"
return 2
esac
echo "$major.$minor.$release"
}