#!/bin/bash

# $1 : version type

set -e

# Build test containers
docker-compose build
docker-compose up -d

# Launch tests
docker exec -it small-swoole-db composer unit-tests
docker exec -it small-swoole-db-swoole composer unit-tests

# Publish only on master branch
if [ "$(git status | grep "On branch" | cut -c11-16)" != "main" ]
then
    printf "\e[31mYou can tag and publish only on main !!!\e[0m\n"
    exit 1
fi

# Get old version
version="$(cat .version)"
version_type=$1
vparts=(${version//./ })
major="${vparts[0]}"
medium="${vparts[1]}"
minor="${vparts[2]}"

# Upgrade version
if [ "$version_type" == "--minor" ]
then
  minor=$(expr $minor + 1)
else
  if [ "$version_type" == "--medium" ]
  then
    medium=$(expr $medium + 1)
    minor=0
  else
    if [ "$version_type" == "--major" ]
    then
      major=$(expr $major + 1)
      medium=0
      minor=0
    else
      printf "\e[31mYou must specify --minor, --medium or --major !!!\e[0m\n"
      exit 1
    fi
  fi
fi
version="$major.$medium.$minor"

printf "\e[32mPublish version $version release...\e[0m\n"

# Store version
echo $version > .version

# Tag commit
git add --all
git commit -m "Tag $version"
git push
git tag $version
git push --tags
