#!/bin/bash
# Inject the modified app.asar into an AirfieldZ AppImage
# Usage: bash inject-into-appimage.sh <chemin-vers-appimage> [chemin-vers-app.asar]

set -e

if [ -z "$1" ]; then
    echo "Usage: bash inject-into-appimage.sh <chemin-vers-appimage> [chemin-vers-app.asar]"
    echo ""
    echo "Arguments:"
    echo "  <chemin-vers-appimage>   - Chemin vers AirfieldZ-*.AppImage"
    echo "  [chemin-vers-app.asar]   - Chemin vers le app.asar modifié (défaut: app.asar dans le même dossier que ce script)"
    exit 1
fi

APPIMAGE="$1"
ASAR_FILE="${2:-$(dirname "$0")/../app.asar}"

if [ ! -f "$APPIMAGE" ]; then
    echo "ERREUR: AppImage introuvable: $APPIMAGE"
    exit 1
fi

if [ ! -f "$ASAR_FILE" ]; then
    echo "ERREUR: app.asar introuvable: $ASAR_FILE"
    exit 1
fi

echo "=== Injection du app.asar modifié dans l'AppImage ==="
echo "AppImage: $APPIMAGE"
echo "app.asar: $ASAR_FILE"

# Rendre l'AppImage exécutable si nécessaire
if [ ! -x "$APPIMAGE" ]; then
    echo "→ Ajout des permissions d'exécution..."
    chmod +x "$APPIMAGE"
fi

# Extraire le contenu de l'AppImage
echo "→ Extraction du squashfs..."
EXTRACT_DIR="/tmp/airfieldz-appimage-extract"
rm -rf "$EXTRACT_DIR"
"$APPIMAGE" --appimage-extract > /dev/null 2>&1 || {
    # Alternative: extraire avec 7z
    mkdir -p "$EXTRACT_DIR"
    7z x "$APPIMAGE" -o"$EXTRACT_DIR" -y > /dev/null 2>&1
}

# Trouver le dossier extrait
if [ -d "squashfs-root" ]; then
    EXTRACT_DIR="squashfs-root"
elif ls -d "$EXTRACT_DIR"/*/ > /dev/null 2>&1; then
    EXTRACT_DIR=$(ls -d "$EXTRACT_DIR"/*/ | head -1)
fi

RESOURCES_DIR="$EXTRACT_DIR/resources"
if [ ! -d "$RESOURCES_DIR" ]; then
    echo "ERREUR: Impossible de trouver le dossier resources dans l'AppImage extraite"
    exit 1
fi

# Sauvegarder l'ancien app.asar
if [ -f "$RESOURCES_DIR/app.asar" ]; then
    cp "$RESOURCES_DIR/app.asar" "$RESOURCES_DIR/app.asar.backup"
    echo "→ Sauvegarde de l'ancien app.asar: app.asar.backup"
fi

# Copier le nouveau app.asar
cp "$ASAR_FILE" "$RESOURCES_DIR/app.asar"
echo "→ Nouveau app.asar copié dans l'AppImage extraite"

# Repackager l'AppImage
echo "→ Repackaging..."
NEW_APPIMAGE="${APPIMAGE%.AppImage}-mod.AppImage"

# Option 1: Utiliser appimagetool si disponible
if command -v appimagetool &> /dev/null; then
    appimagetool "$EXTRACT_DIR" "$NEW_APPIMAGE" > /dev/null 2>&1
    echo "✓ AppImage modifiée créée: $NEW_APPIMAGE"
else
    # Option 2: Juste créer un script qui lance depuis le dossier extrait
    echo ""
    echo "⚠ appimagetool non trouvé."
    echo ""
    echo "L'AppImage a été extraite dans: $EXTRACT_DIR"
    echo "Pour lancer la version modifiée:"
    echo "  $EXTRACT_DIR/AppRun"
    echo ""
    echo "Ou installe appimagetool depuis https://github.com/AppImage/AppImageKit"
fi

# Nettoyer
rm -rf squashfs-root 2>/dev/null

echo ""
echo "=== Terminé ==="
echo "Le app.asar modifié a été injecté."
echo "Fichier original sauvegardé: app.asar.backup"
