#!/usr/bin/env bash # Installe Plume sur ce Mac : télécharge la dernière version, vérifie son empreinte SHA-256 et copie l'application. # # curl -fsSL https://plume.charlescoiffier.fr/install.sh | bash # # Un fichier téléchargé par curl n'est pas mis en quarantaine par macOS : aucun avertissement au premier lancement. # Variables facultatives : PLUME_INSTALL_DIR (défaut /Applications), PLUME_BASE_URL (défaut https://plume.charlescoiffier.fr). set -euo pipefail BASE_URL="${PLUME_BASE_URL:-https://plume.charlescoiffier.fr}" INSTALL_DIR="${PLUME_INSTALL_DIR:-/Applications}" fail() { echo "Erreur : $*" >&2; exit 1; } [ "$(uname -s)" = "Darwin" ] || fail "Plume est une application macOS." [ "$(uname -m)" = "arm64" ] || fail "Plume ne fonctionne que sur les Mac à puce Apple silicon (M1 et suivants)." MAJOR="$(sw_vers -productVersion | cut -d. -f1)" [ "$MAJOR" -ge 13 ] || fail "Plume demande macOS 13 (Ventura) ou plus récent." TMP="$(mktemp -d)" MNT="$TMP/volume" cleanup() { hdiutil detach "$MNT" -quiet 2>/dev/null || true rm -rf "$TMP" } trap cleanup EXIT echo "→ Recherche de la dernière version…" NAME="$(curl -fsSL "$BASE_URL/downloads/LATEST")" [[ "$NAME" =~ ^Plume-[0-9][0-9A-Za-z.-]*\.dmg$ ]] || fail "nom de version inattendu : « $NAME »" echo "→ Téléchargement de ${NAME}…" curl -fL --progress-bar -o "$TMP/$NAME" "$BASE_URL/downloads/$NAME" curl -fsSL -o "$TMP/SHA256SUMS" "$BASE_URL/downloads/SHA256SUMS" EXPECTED="$(awk -v n="$NAME" '$2 == n { print $1 }' "$TMP/SHA256SUMS")" [ -n "$EXPECTED" ] || fail "empreinte de $NAME introuvable dans SHA256SUMS." ACTUAL="$(shasum -a 256 "$TMP/$NAME" | awk '{ print $1 }')" [ "$ACTUAL" = "$EXPECTED" ] || fail "l'empreinte du téléchargement ne correspond pas (attendu $EXPECTED, obtenu $ACTUAL). Installation annulée." echo "→ Empreinte vérifiée." mkdir -p "$MNT" hdiutil attach -nobrowse -readonly -mountpoint "$MNT" "$TMP/$NAME" >/dev/null [ -d "$MNT/Plume.app" ] || fail "Plume.app est introuvable dans l'image disque." mkdir -p "$INSTALL_DIR" if [ -e "$INSTALL_DIR/Plume.app" ]; then echo "→ Remplacement de la version installée (vos projets ne sont pas touchés)." rm -rf "$INSTALL_DIR/Plume.app" fi cp -R "$MNT/Plume.app" "$INSTALL_DIR/Plume.app" || fail "copie impossible dans $INSTALL_DIR (droits insuffisants ?). Relancez avec PLUME_INSTALL_DIR=\"\$HOME/Applications\"." xattr -dr com.apple.quarantine "$INSTALL_DIR/Plume.app" 2>/dev/null || true echo "✓ Plume est installé dans $INSTALL_DIR. Ouvrez-le depuis le Launchpad ou le Finder."