#!/bin/bash

# -------------------------------
# Vérification des arguments
# -------------------------------
if [ -z "$1" ]; then
  echo "Usage : ./mr.sh patch|minor|major \"Message de commit\""
  exit 1
fi

VERSION_TYPE=$1
COMMIT_MSG=$2

# -------------------------------
# Vérification des outils
# -------------------------------
if ! command -v npm &> /dev/null; then
  echo "npm n'est pas installé ou non trouvé dans le PATH"
  exit 1
fi

if ! command -v git &> /dev/null; then
  echo "Git n'est pas installé ou non trouvé dans le PATH"
  exit 1
fi

# -------------------------------
# Lecture de la version actuelle
# -------------------------------
if [ ! -f package.json ]; then
  echo "package.json introuvable"
  exit 1
fi

CURRENT_VERSION=$(node -p "require('./package.json').version" 2>/dev/null)

if [ -z "$CURRENT_VERSION" ]; then
  echo "Impossible de lire la version depuis package.json"
  exit 1
fi

echo "Version actuelle : $CURRENT_VERSION"

# -------------------------------
# Incrément de version
# -------------------------------
echo "🔧 Incrément de version ($VERSION_TYPE)..."

NEW_VERSION=$(npm version "$VERSION_TYPE" --no-git-tag-version 2>/dev/null)

if [ $? -ne 0 ]; then
  echo "Erreur pendant l'incrément de version."
  exit 1
fi

echo "Nouvelle version : $NEW_VERSION"

# -------------------------------
# Création de la branche
# -------------------------------
BRANCH_NAME="$NEW_VERSION/$VERSION_TYPE"
echo "Création de la branche : $BRANCH_NAME..."

git checkout -b "$BRANCH_NAME"

if [ $? -ne 0 ]; then
  echo "Erreur lors de la création de la branche."
  exit 1
fi

# -------------------------------
# Commit
# -------------------------------
echo "Ajout des fichiers..."
git add package.json package-lock.json
git add .

echo "Commit..."

if [ -z "$COMMIT_MSG" ]; then
  COMMIT_MSG="Up JWS"
fi

git commit -m "$NEW_VERSION/$VERSION_TYPE - $COMMIT_MSG"

if [ $? -ne 0 ]; then
  echo "Erreur pendant le commit."
  exit 1
fi

# -------------------------------
# Push automatique
# -------------------------------
echo "Push de la branche vers origin..."
git push -u origin "$BRANCH_NAME"

if [ $? -ne 0 ]; then
  echo "Échec du push."
  exit 1
fi

# -------------------------------
# Création et push du tag
# -------------------------------
TAG_NAME="$NEW_VERSION"
echo "Création du tag : $TAG_NAME"

git tag "$TAG_NAME"
git push origin "$TAG_NAME"

echo ""