#!/bin/zsh

#Fetch remote tags
git fetch origin 'refs/tags/*:refs/tags/*'

#Variables
LAST_VERSION=$(git tag -l | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -n 1)
NEXT_VERSION=$(echo $LAST_VERSION | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}')
VERSION=${1-${NEXT_VERSION}}
DEFAULT_MESSAGE="Release"
MESSAGE=${2-${DEFAULT_MESSAGE}}
RELEASE_BRANCH="release/$VERSION"

# Commit uncommited changes
git add .
git commit -am $MESSAGE
git push origin develop

# Merge develop branch in master
git checkout master
git merge develop

# Tag and push master
git tag $VERSION
git push origin master --tags

# Return to develop
git checkout develop