-
-
Save josephtaylor/9a155983a70d4555dfb011a32ee6abf7 to your computer and use it in GitHub Desktop.
Script to bump the major, minor or patch number by adding a new tag to the git repository, and modifying the "latest" tag.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
latest_tag=$(git tag -l *.*.* --contains $(git rev-list --tags --max-count=1)) | |
if [[ ! "$latest_tag" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | |
echo "The \"latest\" tag did not exist, or did not point to a commit which also had a semantic version tag." | |
exit 1 | |
fi | |
major=$(echo "$latest_tag" | awk -F '.' '{print $1}') | |
minor=$(echo "$latest_tag" | awk -F '.' '{print $2}') | |
patch=$(echo "$latest_tag" | awk -F '.' '{print $3}') | |
echo "Latest semantic version tag: ${major}.${minor}.${patch}" | |
case "$1" in | |
major) | |
echo "Bumping major version." | |
major=$(( $major + 1 )) | |
minor=0 | |
patch=0 | |
;; | |
minor) | |
echo "Bumping minor version." | |
minor=$(( $minor + 1 )) | |
patch=0 | |
;; | |
patch|*) | |
echo "Bumping patch version." | |
patch=$(( $patch + 1 )) | |
;; | |
esac | |
echo "New semantic version is: ${major}.${minor}.${patch}" | |
echo -n "Do you want to tag the current commit with that version? [y/N]: " | |
read answer | |
if [[ "$answer" =~ (y|Y|yes) ]]; then | |
version="${major}.${minor}.${patch}" | |
tag_message="Version $version" | |
latest_message_version="$version" | |
# Add the tag | |
git tag -a $version -m "$tag_message" > /dev/null | |
echo "Latest tags:" | |
git tag -n1 | tail -n5 | |
else | |
echo "Aborted. No tags where added!" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment