#!/bin/bash

# Configuration des variables
ORG="CONFIGS"
CLIENT="SFR"  # Exemple de client
BASE_URL="https://repolake.alc-crm.com"
API_URL="$BASE_URL/api/v1"
REPO_NAME=$(hostname)
REPO_URL="$BASE_URL/$ORG/$REPO_NAME.git"
REPO_PATH="/etc/gitea/CONFIGS/$REPO_NAME"  # Ajusté pour inclure l'organisation correcte
BRANCH="main"
TOKEN="434ac97ae9def5ac02024971582e82dd35f89ee0"
REPO_URL_TOKEN="https://$TOKEN@repolake.alc-crm.com/$ORG/$REPO_NAME.git"
HOSTNAME=$(hostname)

echo "Début du script pour $HOSTNAME"

# Vérifie si le dépôt existe déjà via l'API
response=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $TOKEN" "$API_URL/repos/$ORG/$REPO_NAME")

if [ "$response" -ne 200 ]; then
    echo "Le dépôt $REPO_NAME n'existe pas. Création du dépôt..."
    curl -s -X POST -H "Authorization: token $TOKEN" \
         -H "Content-Type: application/json" \
         -d "{\"name\": \"$REPO_NAME\", \"private\": false}" \
         "$API_URL/orgs/$ORG/repos"
    echo "Dépôt $REPO_NAME créé."
else
    echo "Le dépôt $REPO_NAME existe déjà."
fi

# Vérifie si le répertoire du dépôt existe localement
if [ ! -d "$REPO_PATH/.git" ]; then
    echo "Clonage dans $REPO_PATH..."
    git clone "$REPO_URL_TOKEN" "$REPO_PATH"
    cd "$REPO_PATH"
    git checkout -b $BRANCH
    touch .gitkeep
    git add .gitkeep
    git commit -m "Initial commit"
    git push --set-upstream origin $BRANCH
else
    echo "Le dépôt existe localement."
    cd "$REPO_PATH"
    git checkout $BRANCH || git checkout -b $BRANCH
fi

# Configurer les informations utilisateur Git
if ! git config user.name &>/dev/null; then
    git config user.name "admin-linexos"
    git config user.email "technique@linexos.fr"
fi

# Vérifier et corriger l'URL du dépôt distant
git remote set-url origin "$REPO_URL_TOKEN"
echo "URL distante configurée pour : $REPO_URL_TOKEN"
git remote -v  # Afficher l'URL distante configurée

# Pull des mises à jour distantes
git pull --rebase origin $BRANCH

# Lecture des chemins depuis le fichier de configuration
CONFIG_FILE="/etc/gitea/path_config"

if [ ! -f "$CONFIG_FILE" ]; then
    echo "Le fichier $CONFIG_FILE n'existe pas."
    exit 1
fi

echo "Copie des fichiers de configuration en maintenant l'arborescence..."

while IFS= read -r file; do
    if [ -f "$file" ]; then
        DEST_DIR="$REPO_PATH/$(dirname "$file")"
        mkdir -p "$DEST_DIR"
        cp "$file" "$DEST_DIR"
        echo "Copié $file vers $DEST_DIR"
    else
        echo "Le fichier $file n'existe pas: $file"
    fi
done < "$CONFIG_FILE"

# Ajout et push des modifications
git add -A
git commit -m "Mise à jour des fichiers de configuration pour $HOSTNAME"
git push origin $BRANCH
echo "Modifications poussées vers le dépôt."

echo "Fin du script."
