#!/usr/bin/env bash
# Iskra — instalator dla Linux i macOS.
#
# Instaluje Iskrę w izolowanym środowisku, nie dotykając systemowego Pythona.
# Po instalacji komenda `iskra` jest dostępna w terminalu.
#
# Użycie:
#   curl -fsSL https://iskra.app/pobierz/install.sh | bash
#
# Zmienne (opcjonalne):
#   ISKRA_PACKAGE="https://.../iskra-0.3.0-py3-none-any.whl"  # inna paczka / plik lokalny
#   ISKRA_HOME="$HOME/.iskra"                                  # katalog instalacji
#   ISKRA_BIN_DIR="$HOME/.local/bin"                           # gdzie trafia komenda `iskra`
set -euo pipefail

ISKRA_HOME="${ISKRA_HOME:-$HOME/.iskra}"
VENV_DIR="$ISKRA_HOME/venv"
BIN_DIR="${ISKRA_BIN_DIR:-$HOME/.local/bin}"
ISKRA_PACKAGE="${ISKRA_PACKAGE:-https://iskra.app/pobierz/iskra-latest-py3-none-any.whl}"
MIN_PYTHON="3.10"

info()  { printf '\033[1;34m»\033[0m %s\n' "$1"; }
ok()    { printf '\033[1;32m✓\033[0m %s\n' "$1"; }
warn()  { printf '\033[1;33m!\033[0m %s\n' "$1"; }
fail()  { printf '\033[1;31m✗\033[0m %s\n' "$1" >&2; exit 1; }

# --- 1. Python w wersji co najmniej MIN_PYTHON ---------------------------------
PYTHON=""
for candidate in python3.13 python3.12 python3.11 python3.10 python3 python; do
    if command -v "$candidate" >/dev/null 2>&1; then
        if "$candidate" -c "import sys; sys.exit(0 if sys.version_info[:2] >= tuple(map(int, '$MIN_PYTHON'.split('.'))) else 1)" 2>/dev/null; then
            PYTHON="$candidate"
            break
        fi
    fi
done

if [ -z "$PYTHON" ]; then
    fail "Nie znaleziono Pythona $MIN_PYTHON lub nowszego.
   Linux:  sudo apt install python3 python3-venv
   macOS:  brew install python@3.12
   Potem uruchom instalator ponownie."
fi
ok "Python: $("$PYTHON" --version 2>&1) ($PYTHON)"

# --- 2. Moduł venv (na Debianie/Ubuntu bywa w osobnym pakiecie) -----------------
if ! "$PYTHON" -m venv --help >/dev/null 2>&1; then
    fail "Brak modułu 'venv'. Na Debianie/Ubuntu zainstaluj: sudo apt install python3-venv"
fi

# --- 3. Środowisko i pakiet ----------------------------------------------------
info "Instaluję do $VENV_DIR (to może potrwać chwilę)..."
"$PYTHON" -m venv "$VENV_DIR"
"$VENV_DIR/bin/python" -m pip install --upgrade pip --quiet 2>/dev/null || warn "Nie udało się zaktualizować pip — kontynuuję."
"$VENV_DIR/bin/python" -m pip install --quiet "$ISKRA_PACKAGE"

if [ ! -x "$VENV_DIR/bin/iskra" ]; then
    fail "Instalacja nie utworzyła komendy 'iskra'. Sprawdź, czy adres paczki jest poprawny:
   $ISKRA_PACKAGE"
fi
ok "Iskra zainstalowana w $VENV_DIR"

# --- 4. Komenda w PATH ---------------------------------------------------------
mkdir -p "$BIN_DIR"
ln -sf "$VENV_DIR/bin/iskra" "$BIN_DIR/iskra"
ok "Komenda: $BIN_DIR/iskra"

case ":$PATH:" in
    *":$BIN_DIR:"*) ;;
    *)
        warn "$BIN_DIR nie jest w PATH. Dodaj to do ~/.bashrc lub ~/.zshrc:"
        printf '\n    export PATH="%s:$PATH"\n\n' "$BIN_DIR"
        ;;
esac

# --- 5. Stan licencji ----------------------------------------------------------
printf '\n'
if "$BIN_DIR/iskra" license >/dev/null 2>&1; then
    "$BIN_DIR/iskra" license
else
    info "Następne kroki:"
    printf '    iskra buy                     # kup subskrypcję (otworzy przeglądarkę)\n'
    printf '    iskra activate ISKRA-XXXXX-XXXXX-XXXXX-XXXXX\n'
    printf '    iskra login                   # wpisz własny klucz API dostawcy AI\n'
    printf '    iskra                         # uruchom asystenta\n\n'
fi
