#!/usr/bin/env bash
set -Eeuo pipefail
cd "$(dirname "$0")"
APP_ID="com.aceon.Copier"
APP_VERSION="2.23"
BUNDLE="Aceon-Copier-${APP_VERSION}-Linux-Debian.flatpak"
CHECKSUM="${BUNDLE}.sha256"

finish() {
  echo
  read -r -p "Press Enter to close." _ || true
}
trap finish EXIT

run_admin() {
  if [ "$(id -u)" -eq 0 ]; then
    "$@"
  elif command -v pkexec >/dev/null 2>&1; then
    pkexec "$@"
  elif command -v sudo >/dev/null 2>&1; then
    sudo "$@"
  elif command -v su >/dev/null 2>&1; then
    quoted=""
    for arg in "$@"; do
      quoted="${quoted:+$quoted }$(printf '%q' "$arg")"
    done
    su -c "$quoted"
  else
    echo "Administrator permission is needed, but pkexec, sudo, and su were not found."
    return 127
  fi
}

install_flatpak_with_apt() {
  if command -v apt-get >/dev/null 2>&1; then
    run_admin env DEBIAN_FRONTEND=noninteractive apt-get update
    run_admin env DEBIAN_FRONTEND=noninteractive apt-get install -y flatpak
  elif command -v apt >/dev/null 2>&1; then
    run_admin env DEBIAN_FRONTEND=noninteractive apt update
    run_admin env DEBIAN_FRONTEND=noninteractive apt install -y flatpak
  elif command -v nala >/dev/null 2>&1; then
    run_admin env DEBIAN_FRONTEND=noninteractive nala update
    run_admin env DEBIAN_FRONTEND=noninteractive nala install -y flatpak
  else
    echo "Flatpak is missing and this does not look like an apt/dpkg Debian-family system."
    echo "Install Flatpak with your distribution's package manager, then run this installer again."
    return 127
  fi
}

echo "Aceon Copier $APP_VERSION installer"
echo "Target: Debian-family Linux with Flatpak support"
if ! command -v flatpak >/dev/null 2>&1; then
  echo "Flatpak is missing. Installing Flatpak first..."
  install_flatpak_with_apt
fi

sha256sum -c "$CHECKSUM"
flatpak uninstall --user -y "${APP_ID}//${APP_VERSION}" >/dev/null 2>&1 || true
for OLD_VERSION in 1.40 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.50 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.60 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.70 1.71 1.72 1.8 1.9 1.10 1.11 1.12 1.73 1.74 1.75 2.0 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22; do
  flatpak uninstall --user -y "${APP_ID}//${OLD_VERSION}" >/dev/null 2>&1 || true
done
flatpak install --user -y --bundle "$BUNDLE"
flatpak run --user --branch="$APP_VERSION" "$APP_ID" --version
echo "Aceon Copier $APP_VERSION is installed for this user."
