#!/bin/bash

# Exit script if you try to use an uninitialized variable.
set -o nounset
# Exit script if a statement returns a non-true return value.
set -o errexit
# Use the error status of the first failure, rather than that of the last item in a pipeline.
set -o pipefail

# Setup git env
git config --global user.email "$CI_GIT_EMAIL"
git config --global user.name "$CI_GIT_USER"
echo "git user is $CI_GIT_USER ($CI_GIT_EMAIL)"

RELEASE_VER=$(echo "$CIRCLE_TAG" | grep -Po "(?<=v)[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)")

if [ -z "$RELEASE_VER" ]; then
    echo "No release version provided"
    exit 1
fi
if [[ $RELEASE_VER =~ ^[0-9]+(\.[0-9]+){2}(-.+|[^-.]*) ]]; then
  echo "Preparing release $RELEASE_VER"
else
  echo "Release should has format 1.2.3[-meta], got $RELEASE_VER"
  exit 1
fi

RELEASE_BRANCH=release-$RELEASE_VER

# Build plugin
git checkout -b "$RELEASE_BRANCH"
yarn install --pure-lockfile && yarn build

# Commit release
git add --force dist/
git commit -m "release $RELEASE_VER"

RELEASE_COMMIT_HASH=$(git log -n 1 | grep -Po "(?<=commit )[0-9a-z]{40}")
echo "$RELEASE_COMMIT_HASH"

# Push release branch
git push origin "$RELEASE_BRANCH"
