#!/usr/bin/env bash
# install-all.sh v1.0 — пакетная установка софта на Ubuntu 24.04 (noble)
# Запуск: chmod +x install-all.sh && ./install-all.sh
set -uo pipefail

LOG="$HOME/soft-tracker/install-all.log"
: > "$LOG"
log() { echo "[$(date '+%H:%M:%S')] $*" | tee -a "$LOG"; }
fail() { log "❌ $*"; FAIL+=("$*"); }
ok()   { log "✅ $*"; OK+=("$*"); }

declare -a OK=() FAIL=()

log "===== Начинаю пакетную установку ====="

# ============================================================
# 1. АРХИВ UBUNTU (простые apt install)
# ============================================================
log "--- [1/6] Пакеты из архива Ubuntu ---"
sudo apt update -qq
sudo apt install -y \
  thunderbird \
  nextcloud-desktop \
  calibre \
  keepassxc \
  gparted \
  doublecmd-gtk \
  transmission-gtk \
  git \
  remmina \
  remmina-plugin-rdp remmina-plugin-vnc remmina-plugin-secret \
  flatpak gnome-software-plugin-flatpak \
  >> "$LOG" 2>&1 && ok "Пакеты из архива" || fail "Часть архивных пакетов"

# ============================================================
# 2. PPA: XtraDeb (ungoogled-chromium)
# ============================================================
log "--- [2/6] PPA: ungoogled-chromium (XtraDeb) ---"
if ! grep -q xtradeb /etc/apt/sources.list.d/*.list 2>/dev/null; then
  sudo add-apt-repository -y ppa:xtradeb/apps >> "$LOG" 2>&1
fi
sudo apt update -qq
sudo apt install -y ungoogled-chromium >> "$LOG" 2>&1 \
  && ok "ungoogled-chromium (XtraDeb PPA)" || fail "ungoogled-chromium"

# ============================================================
# 3. PPA: Microsoft (VS Code)
# ============================================================
log "--- [3/6] PPA: Visual Studio Code (Microsoft) ---"
if [ ! -f /etc/apt/sources.list.d/vscode.list ]; then
  wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-archive-keyring.gpg
  echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list >/dev/null
fi
sudo apt update -qq
sudo apt install -y code >> "$LOG" 2>&1 \
  && ok "Visual Studio Code (Microsoft)" || fail "VS Code"

# ============================================================
# 4. OFFICIAL .DEB (draw.io, NAPS2, Resilio Sync, Obsidian)
# ============================================================
log "--- [4/6] Официальные .deb с GitHub/сайтов ---"
DEB_DIR=/tmp/soft-install
mkdir -p "$DEB_DIR"
cd "$DEB_DIR"

# --- draw.io ---
DRAWIO_URL=$(curl -sf https://api.github.com/repos/jgraph/drawio-desktop/releases/latest \
  | grep -oP '"browser_download_url": "\K[^"]+amd64\.deb' | head -1)
if [ -n "$DRAWIO_URL" ]; then
  wget -q "$DRAWIO_URL" -O drawio.deb
  sudo apt install -y ./drawio.deb >> "$LOG" 2>&1 \
    && ok "draw.io (GitHub)" || fail "draw.io"
else
  fail "draw.io — не удалось получить URL"
fi

# --- Obsidian ---
OBS_URL=$(curl -sf https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest \
  | grep -oP '"browser_download_url": "\K[^"]+amd64\.deb' | head -1)
if [ -n "$OBS_URL" ]; then
  wget -q "$OBS_URL" -O obsidian.deb
  sudo apt install -y ./obsidian.deb >> "$LOG" 2>&1 \
    && ok "Obsidian (GitHub)" || fail "Obsidian"
else
  fail "Obsidian — не удалось получить URL"
fi

# --- NAPS2 ---
NAPS2_URL="https://www.naps2.com/download/naps2-8.3.2-x64.deb"
wget -q "$NAPS2_URL" -O naps2.deb
sudo apt install -y ./naps2.deb >> "$LOG" 2>&1 \
  && ok "NAPS2 (офиц. сайт)" || fail "NAPS2"

# --- Resilio Sync ---
if [ ! -f /etc/apt/sources.list.d/resilio-sync.list ]; then
  wget -qO- https://linux-packages.resilio.com/resilio-sync/key.asc | sudo apt-key add - >/dev/null 2>&1
  echo "deb https://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free" | sudo tee /etc/apt/sources.list.d/resilio-sync.list >/dev/null
fi
sudo apt update -qq
sudo apt install -y resilio-sync >> "$LOG" 2>&1 \
  && ok "Resilio Sync (офиц.)" || fail "Resilio Sync"
# запустим от пользователя nikita, а не как сервис
sudo systemctl disable resilio-sync 2>/dev/null
sudo systemctl --user enable resilio-sync 2>/dev/null || true

# ============================================================
# 5. FLATPAK (Daynizer)
# ============================================================
log "--- [5/6] Flatpak: Daynizer ---"
flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo 2>/dev/null
flatpak install -y --user flathub io.github.precisioncrab.Daynizer >> "$LOG" 2>&1 \
  && ok "Daynizer (Flathub)" || fail "Daynizer"

# ============================================================
# 6. VMWARE WORKSTATION (вручную, требует bundle)
# ============================================================
log "--- [6/6] VMware Workstation ---"
log "⚠️  VMware Workstation НЕ устанавливается автоматически!"
log "   Скачай bundle с https://support.broadcom.com (нужна регистрация)"
log "   Потом: sudo sh VMware-Workstation-Full-*.bundle"
log "   Ключ активации — в KeePass (если есть лицензия)"

# ============================================================
# ИТОГ
# ============================================================
log ""
log "======================================================"
log "✅ Установлено: ${#OK[@]}"
for x in "${OK[@]}"; do log "   + $x"; done
log "❌ Ошибок: ${#FAIL[@]}"
for x in "${FAIL[@]}"; do log "   - $x"; done
log "======================================================"
log "📄 Полный лог: $LOG"
log ""
log "⚠️  ВАЖНО: после установки запусти пункт 1 в soft-repo-manager.sh"
log "   чтобы весь софт попал в твой личный apt-репозиторий."