#!/bin/bash
# Installe ArtCraft Launcher + les 13 Craft apps en AppImage (sans root) dans ~/Applications/ArtCraft
set -u
DIR="$HOME/Applications/ArtCraft"; APPS="$HOME/.local/share/applications"; ICONS="$HOME/.local/share/icons/hicolor/256x256/apps"
mkdir -p "$DIR" "$APPS" "$ICONS"; cd "$DIR" || exit 1
LOG="$DIR/install.log"; : > "$LOG"
install_one() { # repo
  local repo=$1 api url name ver
  api=$(curl -s -m 30 "https://api.github.com/repos/storytold/$repo/releases/latest")
  ver=$(echo "$api" | python3 -c "import json,sys; print(json.load(sys.stdin).get('tag_name',''))")
  url=$(echo "$api" | python3 -c "import json,sys; [print(a['browser_download_url']) for a in json.load(sys.stdin).get('assets',[]) if a['name'].endswith('linux-x86_64.AppImage')]" | head -1)
  [ -z "$url" ] && { echo "$repo: pas d'AppImage" | tee -a "$LOG"; return; }
  name=$(basename "$url"); 
  if [ ! -s "$name" ]; then curl -sL -m 600 -o "$name.part" "$url" && mv "$name.part" "$name"; fi
  chmod +x "$name"; ln -sfn "$name" "$repo.AppImage"
  # .desktop + icône extraits de l'AppImage
  rm -rf squashfs-root; "./$name" --appimage-extract '*.desktop' >/dev/null 2>&1; "./$name" --appimage-extract '*.png' >/dev/null 2>&1; "./$name" --appimage-extract 'usr/share/icons/hicolor/256x256/apps/*' >/dev/null 2>&1
  local d=$(find squashfs-root -maxdepth 1 -name '*.desktop' | head -1); local ic=$(find squashfs-root -name '*.png' | sort -r | head -1)
  [ -n "$ic" ] && cp "$ic" "$ICONS/$repo.png"
  if [ -n "$d" ]; then sed -e "s|^Exec=.*|Exec=$DIR/$repo.AppImage %U|" -e "s|^Icon=.*|Icon=$repo|" -e "s|^TryExec=.*||" "$d" > "$APPS/artcraft-$repo.desktop"
  else printf '[Desktop Entry]\nType=Application\nName=%s\nExec=%s/%s.AppImage %%U\nIcon=%s\nCategories=Graphics;Office;\n' "$repo" "$DIR" "$repo" "$repo" > "$APPS/artcraft-$repo.desktop"; fi
  rm -rf squashfs-root
  echo "$repo $ver OK ($name, $(du -h "$name" | cut -f1))" | tee -a "$LOG"
}
for r in craft-launcher photocraft pdfcraft figcraft vectorcraft lightcraft wordcraft deckcraft gridcraft filmcraft effectcraft designcraft cadcraft soundcraft; do install_one "$r"; done
update-desktop-database "$APPS" 2>/dev/null; gtk-update-icon-cache -f -t "$HOME/.local/share/icons/hicolor" 2>/dev/null
echo "TERMINE $(date)" | tee -a "$LOG"
