Skip to content

Instantly share code, notes, and snippets.

@josephtaylor
Forked from marcuswhybrow/bump.sh
Created October 13, 2017 16:47
Show Gist options
  • Save josephtaylor/9a155983a70d4555dfb011a32ee6abf7 to your computer and use it in GitHub Desktop.
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.
#!/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