#!/bin/bash
MAVEN_CLI_OPTS="--batch-mode --errors --update-snapshots --fail-at-end --no-transfer-progress"

determine_properties() {
  OUTPUT=$(grep "^generator.java.output\+[[:space:]]*\+=" sdl.properties | cut -d "=" -f 2 | tr -d '[[:space:]]')
  : ${OUTPUT:=java}

  echo "[CI] - OUTPUT=$OUTPUT"
}

set_version() {
  sed -i "s/generator.app.version=.*/generator.app.version=${VERSION}/" sdl.properties

  mvn $MAVEN_CLI_OPTS versions:set -DgenerateBackupPoms=false -DnewVersion=$VERSION
  mvn $MAVEN_CLI_OPTS versions:set -DgenerateBackupPoms=false -DnewVersion=$VERSION --file $OUTPUT/pom.xml
}

change_version() {
  determine_properties

  mvn $MAVEN_CLI_OPTS clean generate-sources

  set_version
}

HEAD="$(git show -s --pretty=%d HEAD)"

echo $HEAD

VERSION="$(echo "$HEAD" | cut -d ',' -f2 | sed "s/-\([[:digit:]]\)/\.\1/g" | sed "s/[^[:digit:].]//g")"

echo "head version: $VERSION"

SDL_PROPERTIES="sdl.properties"

if [[ -z "${VERSION}" && -f "$SDL_PROPERTIES" ]]; then
	VERSION=$(cat $SDL_PROPERTIES | grep "generator.app.version=" | head -1 | cut -d "=" -f 2 | sed "s/[{, }, \", ',[:space:]]//g";)
fi

echo "sdl.properties version: $VERSION"

if [ "$1" == "major" -o "$1" == "minor" -o "$1" == "patch" ]; then
  get_next_version $1
fi

echo "senior-ci version: $VERSION"

VERSION_HYPHEN=$(echo "v$VERSION" | sed "s/\.\([[:digit:]]\)/-\1/g")

git ls-remote --heads origin | grep -E "refs/heads/hotfix/${VERSION_HYPHEN}/$" >/dev/null

if [[ "$?" -eq "0" ]]; then
  echo "[CI] Já tem um hotfix para gerar a versão $VERSION, iremos considerrar a próxima"

  get_next_version $1 $VERSION

	VERSION_HYPHEN = $(echo "v$VERSION" | sed "s/\.\([[:digit:]]\)/-\1/g");
fi

echo -e "[CI] Version $VERSION_HYPHEN will be created\n"
