#!/bin/sh
# Installazione automatica del motore AssoSoftware — macOS, Linux e Android (dentro Termux). 28/09/2026.
# Si usa con un solo comando, da incollare nel Terminale:
#     curl -fsSL https://asso.software/installa.sh | sh
# Che cosa fa, senza chiedere niente:
#   1. riconosce il sistema (macOS, Linux, Android/Termux) e il processore (x64 o ARM a 64 bit);
#   2. scarica il pacchetto giusto da https://asso.software/download/;
#   3. controlla l'impronta SHA-256 con l'elenco pubblicato (download/SHA256SUMS-motore.txt):
#      se non coincide si ferma e non installa nulla;
#   4. estrae il pacchetto in una cartella temporanea ed esegue il suo installatore
#      (lo stesso che c'è nel pacchetto: niente permessi di amministratore, avvio automatico);
#   5. cancella la cartella temporanea.
# Per Windows c'è il file AssoSoftware-Installa.exe: non serve questo script.
set -e
SITO="https://asso.software/download"
dire() { printf '%s\n' "AssoSoftware: $*"; }
fermo() { printf '%s\n' "AssoSoftware: $*" >&2; exit 1; }

SIS=$(uname -s); ARCH=$(uname -m)
case "$ARCH" in x86_64|amd64) ARCH=x64 ;; aarch64|arm64) ARCH=arm64 ;; *) fermo "processore «$ARCH» non previsto: servono x64 o ARM a 64 bit." ;; esac
if [ -n "$TERMUX_VERSION" ] || [ -d /data/data/com.termux ]; then
  [ "$ARCH" = arm64 ] || fermo "su Android serve un dispositivo a 64 bit (ARM64)."
  PACCO="AssoSoftware-Android-arm64.zip"; INST="installa-android.sh"
  dire "preparo Termux (curl e unzip)"; pkg install -y curl unzip >/dev/null 2>&1 || true
elif [ "$SIS" = Darwin ]; then
  PACCO="AssoSoftware-macOS-$ARCH.zip"; INST="Installa-macOS.command"
elif [ "$SIS" = Linux ]; then
  PACCO="AssoSoftware-Linux-$ARCH.tar.gz"; INST="installa-linux.sh"
else
  fermo "sistema «$SIS» non previsto. Per Windows scarica $SITO/AssoSoftware-Installa.exe"
fi

prendi() { if command -v curl >/dev/null 2>&1; then curl -fL --retry 3 -o "$2" "$1"; else wget -O "$2" "$1"; fi; }
impronta() { if command -v sha256sum >/dev/null 2>&1; then sha256sum "$1" | cut -d' ' -f1; else shasum -a 256 "$1" | cut -d' ' -f1; fi; }

TMP=$(mktemp -d 2>/dev/null || mktemp -d -t asso)
trap 'rm -rf "$TMP"' EXIT
dire "sistema riconosciuto: $SIS $ARCH -> scarico $PACCO"
prendi "$SITO/$PACCO" "$TMP/$PACCO"
prendi "$SITO/SHA256SUMS-motore.txt" "$TMP/impronte.txt"
ATTESA=$(grep " $PACCO\$" "$TMP/impronte.txt" | cut -d' ' -f1)
VERA=$(impronta "$TMP/$PACCO")
[ -n "$ATTESA" ] && [ "$ATTESA" = "$VERA" ] || fermo "l'impronta del file scaricato non coincide con quella pubblicata: non installo nulla. Riprova più tardi."
dire "impronta controllata, estraggo"
cd "$TMP"
case "$PACCO" in *.zip) unzip -q "$PACCO" ;; *) tar xzf "$PACCO" ;; esac
CART="$TMP/${PACCO%.zip}"; CART="${CART%.tar.gz}"
[ -f "$CART/$INST" ] || fermo "nel pacchetto manca $INST."
dire "avvio l'installazione"
sh "$CART/$INST"
