#!/bin/bash -e

readonly BETA=0
readonly STABLE=1
readonly PREVIEW=2

generate_version() {
  format="v$(date +%Y%m%d.%s)"
  
  case "$1" in
    0)
      version="beta-$format"
    ;;
    1)
      version="stable-$format"
    ;;
    2)
      version="preview-$format"
    ;;
  esac
  
  echo "Version $version generated."
}

create_tag() {
  echo "Please input tag description:"
  read tag_description
  echo Tag description: $tag_description

  git tag -a $version -m "$tag_description"
}

push_tag() {
  echo "Pushing version $version to repository..."

  git push origin $version

  echo "Tag $version succesfully pushed to repository."
}

release_version() {
  echo "Releasing version $version..."

  generate_version $1
  create_tag
  push_tag

  echo "Version release completed."
}

while getopts "r:" option; do
  case "${option}" in
    r)
      release_type=${OPTARG}

      case "$release_type" in
        beta)
          release_version $BETA
        ;;
        stable)
          release_version $STABLE
        ;;
        preview)
          release_version $PREVIEW
        ;;
      esac
    ;;
  esac
done
