#!/bin/bash
# Installe Cineo sur ce Mac.
#
# Pourquoi une ligne à coller plutôt qu'un double-clic : macOS refuse d'ouvrir un logiciel
# venu d'internet tant qu'Apple ne l'a pas contresigné, ce qui suppose un compte
# développeur payant. Le refus vaut aussi pour un script d'installation — c'est pour cela
# que l'installateur rangé dans l'image disque obligeait à passer par les Réglages du
# système avant même de commencer.
#
# Un script lancé depuis le Terminal, lui, n'est pas soumis à ce contrôle. Celui-ci fait
# donc à la main ce que le contreseing d'Apple ferait tout seul : il télécharge Cineo,
# vérifie son empreinte, le copie dans Applications et retire la marque de quarantaine.
#
# Rien n'est installé ailleurs, rien ne tourne en arrière-plan, aucun mot de passe n'est
# demandé. Vous pouvez lire ce fichier de bout en bout avant de l'exécuter.
set -euo pipefail

VERSION="0.9.7"
URL_ARM="https://annkfipbwmtkphpnhcrb.supabase.co/storage/v1/object/public/cineo/Cineo-0.9.7-AppleSilicon.zip"
SHA_ARM="8cb46240025e4359caa52196adc92ed1abaf7b18dc0fafbe08f89e99d8b4d389"
URL_UNIVERSEL=""
SHA_UNIVERSEL=""

BLEU=$'\033[1;36m'; VERT=$'\033[1;32m'; ROUGE=$'\033[1;31m'; GRIS=$'\033[0;90m'; FIN=$'\033[0m'
printf '\n%s   ▸ Installation de Cineo %s%s\n\n' "$BLEU" "$VERSION" "$FIN"

# Deux variantes circulent : une réservée aux puces Apple, moitié moins lourde, et une
# universelle. Se tromper installerait une application qui refuse de s'ouvrir.
if [ "$(uname -m)" = "arm64" ]; then
  URL="$URL_ARM"; EMPREINTE="$SHA_ARM"; VARIANTE="Apple Silicon"
else
  URL="$URL_UNIVERSEL"; EMPREINTE="$SHA_UNIVERSEL"; VARIANTE="Intel"
fi

if [ -z "$URL" ]; then
  printf '%s   Aucune version pour un Mac %s dans cette publication.%s\n\n' "$ROUGE" "$VARIANTE" "$FIN"
  exit 1
fi

TEMPORAIRE=$(mktemp -d)
trap 'rm -rf "$TEMPORAIRE"' EXIT

printf '   Téléchargement (%s)…\n' "$VARIANTE"
if ! curl -fL --progress-bar "$URL" -o "$TEMPORAIRE/cineo.zip"; then
  printf '\n%s   Téléchargement impossible. Vérifiez votre connexion.%s\n\n' "$ROUGE" "$FIN"
  exit 1
fi

# L'empreinte protège de deux choses : un téléchargement abîmé, et un fichier remplacé en
# chemin. Elle vaut d'autant plus ici que l'application n'est pas contresignée par Apple.
printf '   Vérification de l'"'"'empreinte…\n'
OBTENUE=$(shasum -a 256 "$TEMPORAIRE/cineo.zip" | cut -d' ' -f1)
if [ "$OBTENUE" != "$EMPREINTE" ]; then
  printf '\n%s   Le fichier reçu ne correspond pas à celui publié. Installation annulée.%s\n' "$ROUGE" "$FIN"
  printf '%s   attendue : %s%s\n' "$GRIS" "$EMPREINTE" "$FIN"
  printf '%s   obtenue  : %s%s\n\n' "$GRIS" "$OBTENUE" "$FIN"
  exit 1
fi

printf '   Décompression…\n'
ditto -x -k "$TEMPORAIRE/cineo.zip" "$TEMPORAIRE/paquet"
SOURCE=$(find "$TEMPORAIRE/paquet" -maxdepth 2 -name "Cineo.app" -print -quit)
if [ -z "$SOURCE" ]; then
  printf '\n%s   L'"'"'archive ne contient pas Cineo.%s\n\n' "$ROUGE" "$FIN"
  exit 1
fi

DEST="/Applications/Cineo.app"
if [ -d "$DEST" ]; then
  printf '   Une version est déjà installée, elle sera remplacée.\n'
  # Remplacer une application en cours d'exécution la casse : on la ferme d'abord.
  osascript -e 'tell application "Cineo" to quit' >/dev/null 2>&1 || true
  sleep 2
  rm -rf "$DEST"
fi

printf '   Copie vers Applications…\n'
ditto "$SOURCE" "$DEST"

# Le geste décisif : sans lui, le premier lancement renvoie vers les Réglages du système.
printf '   Levée de la marque de quarantaine…\n'
xattr -dr com.apple.quarantine "$DEST" 2>/dev/null || true

# La signature interne, elle, doit rester intacte — c'est elle qui garantit que le paquet
# n'a pas été modifié depuis sa fabrication.
if codesign -v "$DEST" >/dev/null 2>&1; then
  printf '%s   Signature vérifiée.%s\n' "$GRIS" "$FIN"
else
  printf '%s   Signature interne absente ou abîmée — Cineo s'"'"'ouvrira quand même.%s\n' "$GRIS" "$FIN"
fi

printf '\n%s   ▸ Cineo est installé.%s\n\n' "$VERT" "$FIN"
open -a "$DEST"
