#!/usr/bin/env bash

set -euo pipefail

CURRENT_RELEASE="$(
  git branch --list 'release-*' \
    | sed 's/^[* ]*//' \
    | sed 's/^release-//' \
    | sort -V \
    | tail -n 1
)"

if [[ -z "$CURRENT_RELEASE" ]]; then
  echo "Erreur : aucune branche release-* trouvée."
  exit 1
fi

if [[ ! "$CURRENT_RELEASE" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
  echo "Erreur : format de release invalide : release-$CURRENT_RELEASE"
  echo "Format attendu : release-1.0.23"
  exit 1
fi

MAJOR="${BASH_REMATCH[1]}"
MINOR="${BASH_REMATCH[2]}"
PATCH="${BASH_REMATCH[3]}"

echo "Release courante détectée : release-${MAJOR}.${MINOR}.${PATCH}"
echo
echo "Quel type de release veux-tu créer ?"
echo "1) minor -> release-${MAJOR}.${MINOR}.$((PATCH + 1))"
echo "2) major -> release-${MAJOR}.$((MINOR + 1)).0"
echo

read -rp "Choix [minor/major] : " RELEASE_TYPE

case "$RELEASE_TYPE" in
  1)
    PATCH=$((PATCH + 1))
    NEXT_RELEASE="release-${MAJOR}.${MINOR}.${PATCH}"
    ;;

  2)
    MINOR=$((MINOR + 1))
    PATCH=0
    NEXT_RELEASE="release-${MAJOR}.${MINOR}.${PATCH}"
    ;;

  *)
    echo "Erreur : choix invalide. Utilise minor ou major."
    exit 1
    ;;
esac

echo
echo "Prochaine release : $NEXT_RELEASE"