#!/data/data/com.termux/files/usr/bin/bash
# ==============================================================================
# Oh My Pi (omp) Installer for Termux (Pixel 6a / GrapheneOS / ARM64)
# Repo: https://github.com/can1357/oh-my-pi
# ==============================================================================

set -e

# Kolory komunikatów
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color

echo -e "${CYAN}${BOLD}"
echo "=============================================================="
echo "    🥧  Instalator Oh My Pi (omp) dla Termux"
echo "    Arch: ARM64 (aarch64) | Pixel 6a (GrapheneOS)"
echo "=============================================================="
echo -e "${NC}"

# 1. Sprawdzenie czy skrypt działa w Termux
if [ -z "$PREFIX" ] || [ ! -d "/data/data/com.termux" ]; then
    echo -e "${RED}⚠️  Uwaga: Ten skrypt jest przeznaczony do uruchomienia w aplikacji Termux na telefonie.${NC}"
    read -r -p "Czy chcesz kontynuować mimo to? (t/N): " confirm
    if [[ ! "$confirm" =~ ^[tTyY] ]]; then
        echo -e "${RED}Przerwano instalację.${NC}"
        exit 1
    fi
fi

# 2. Blokada uśpienia (Wake lock)
if command -v termux-wake-lock &>/dev/null; then
    echo -e "${BLUE}🔒 Aktywuję termux-wake-lock...${NC}"
    termux-wake-lock
fi

# 3. Aktualizacja i naprawa dpkg w Termux
echo -e "${GREEN}[1/5] Weryfikacja i przygotowanie pakietów Termux...${NC}"
dpkg --configure -a 2>/dev/null || true

# Usunięcie problematycznych pakietów jeśli były uszkodzone
if dpkg -s ffmpeg 2>/dev/null | grep -Eq "half-configured|unpacked"; then
    dpkg --remove --force-remove-reinstreq mpv ffmpeg libplacebo 2>/dev/null || true
fi
apt-get --fix-broken install -y 2>/dev/null || true

pkg update -y || true
pkg install -y proot-distro curl wget git jq termux-tools
pkg install -y termux-api 2>/dev/null || true

# 4. Sprawdzenie / instalacja kontenera Debian w proot-distro
echo -e "${GREEN}[2/5] Przygotowanie środowiska Debian w proot-distro...${NC}"
if proot-distro list 2>/dev/null | grep -q "debian.*\[installed\]"; then
    echo -e "${BLUE}  Debian jest już zainstalowany. Przechodzę do konfiguracji...${NC}"
else
    echo -e "${CYAN}  Pobieram i instaluję rootfs Debian (ARM64 glibc)...${NC}"
    proot-distro install debian
fi

# 5. Instalacja zależności i pobranie Oh My Pi wewnątrz Debiana
echo -e "${GREEN}[3/5] Instalacja Oh My Pi (omp) oraz Bun wewnątrz Debiana...${NC}"

# shellcheck disable=SC2016
proot-distro login debian -- bash -c '
set -e
export DEBIAN_FRONTEND=noninteractive

echo "==> Aktualizacja pakietów Debiana..."
apt-get update -y
apt-get install -y --no-install-recommends \
    git \
    curl \
    wget \
    ca-certificates \
    procps \
    ripgrep \
    fd-find \
    unzip \
    tar \
    xz-utils

# Utworzenie aliasu dla fd (w Debianie pakiet nazywa się fd-find a binarka fdfind)
if [ ! -f /usr/local/bin/fd ] && command -v fdfind >/dev/null; then
    ln -sf "$(command -v fdfind)" /usr/local/bin/fd
fi

# Przygotowanie katalogu na strukturę Termux (mapowanie 1:1)
mkdir -p /data/data/com.termux/files/home
mkdir -p /root/.config /root/.local/share /root/.local/bin

# Pobranie oficjalnej skompilowanej binarki Oh My Pi (omp) dla Linux ARM64
echo "==> Pobieranie najnowszej wersji omp (omp-linux-arm64)..."
OMP_BIN_URL="https://github.com/can1357/oh-my-pi/releases/latest/download/omp-linux-arm64"
curl -fsSL -o /usr/local/bin/omp "$OMP_BIN_URL"
chmod +x /usr/local/bin/omp

# Opcjonalnie: Instalacja Bun dla pełnego ekosystemu narzędzi
if ! command -v bun >/dev/null 2>&1; then
    echo "==> Instalacja środowiska Bun (Linux aarch64)..."
    curl -fsSL https://bun.sh/install | bash || true
    if [ -d "/root/.bun/bin" ]; then
        ln -sf /root/.bun/bin/bun /usr/local/bin/bun 2>/dev/null || true
    fi
fi

# Mostek schowka systemowego Androida
cat << "CLIP_EOF" > /usr/local/bin/termux-clipboard-set
#!/bin/bash
if [ -x "/termux-bin/termux-clipboard-set" ]; then
    /termux-bin/termux-clipboard-set "$@"
fi
CLIP_EOF
chmod +x /usr/local/bin/termux-clipboard-set

cat << "CLIP_EOF" > /usr/local/bin/termux-clipboard-get
#!/bin/bash
if [ -x "/termux-bin/termux-clipboard-get" ]; then
    /termux-bin/termux-clipboard-get "$@"
fi
CLIP_EOF
chmod +x /usr/local/bin/termux-clipboard-get

# Tworzenie symlinków xclip/wl-copy na schowek Androida
ln -sf /usr/local/bin/termux-clipboard-set /usr/local/bin/wl-copy 2>/dev/null || true
ln -sf /usr/local/bin/termux-clipboard-set /usr/local/bin/xclip 2>/dev/null || true

echo "==> Binarka omp została pomyślnie zainstalowana w /usr/local/bin/omp!"
'

# 6. Utworzenie wrappera w Termux ($PREFIX/bin/omp)
echo -e "${GREEN}[4/5] Tworzenie polecenia omp w Termux ($PREFIX/bin/omp)...${NC}"

cat << 'EOF' > "$PREFIX/bin/omp"
#!/data/data/com.termux/files/usr/bin/bash
# Wrapper uruchamiający Oh My Pi w środowisku Debian z mapowaniem PWD 1:1

CURRENT_DIR="$(pwd)"

# Dodatkowe bindowanie pamięci współdzielonej Androida jeśli istnieje
SDCARD_BIND=""
if [ -d "/sdcard" ]; then
    SDCARD_BIND="--bind /sdcard:/sdcard"
fi

exec proot-distro login debian \
    --bind /data/data/com.termux/files/home:/data/data/com.termux/files/home \
    --bind /data/data/com.termux/files/home:/root/termux-home \
    --bind /data/data/com.termux/files/usr/bin:/termux-bin:ro \
    $SDCARD_BIND \
    --bind "$CURRENT_DIR":"$CURRENT_DIR" \
    --work-dir "$CURRENT_DIR" \
    -- bash -c '
        export PATH="/root/.bun/bin:/usr/local/bin:/usr/bin:/bin:$PATH"
        export HOME=/root
        exec /usr/local/bin/omp "$@"
    ' -- "$@"
EOF
chmod +x "$PREFIX/bin/omp"

# Dodanie alternatywnych poleceń aby uniknąć konfliktu z Oh My Posh (które często ma alias 'omp')
ln -sf "$PREFIX/bin/omp" "$PREFIX/bin/oh-my-pi"
ln -sf "$PREFIX/bin/omp" "$PREFIX/bin/ompi"
ln -sf "$PREFIX/bin/omp" "$PREFIX/bin/pi-agent"

# 7. Test i podsumowanie
echo -e "${GREEN}[5/5] Testowanie instalacji...${NC}"
echo -e "${CYAN}Wersja Oh My Pi:${NC}"
"$PREFIX/bin/oh-my-pi" --version || true

echo ""
echo -e "${GREEN}${BOLD}==============================================================${NC}"
echo -e "${GREEN}${BOLD}    ✅ Oh My Pi zostało pomyślnie zainstalowane!${NC}"
echo -e "${GREEN}${BOLD}==============================================================${NC}"
echo ""
echo -e "${YELLOW}⚠️  WAŻNA UWAGA O SKRÓCIE 'omp':${NC}"
echo "W Zsh skrót 'omp' jest często aliasem do Oh My Posh (generatora motywów prompta)."
echo "Aby uruchomić Oh My Pi (agenta AI):"
echo -e "  1. Używaj polecenia: ${CYAN}oh-my-pi${NC}  lub  ${CYAN}ompi${NC}"
echo -e "  2. Albo omiń alias wpisując: ${CYAN}\\omp${NC}"
echo -e "  3. Jeśli chcesz, aby 'omp' zawsze otwierało agenta AI, wpisz:"
echo -e "     ${YELLOW}unalias omp${NC} (oraz usuń 'alias omp=...' ze swojego ~/.zshrc)"
echo ""
echo -e "Uruchomienie asystenta w projekcie:"
echo -e "  ${YELLOW}cd ~/twoj-projekt${NC}"
echo -e "  ${YELLOW}oh-my-pi${NC}   (lub: ${YELLOW}ompi${NC})"
echo ""
echo -e "Konfiguracja kluczy API (np. Claude, OpenAI, DeepSeek):"
echo -e "  Wpisz klucz w terminalu lub dodaj do pliku środowiska:"
echo -e "  ${CYAN}export ANTHROPIC_API_KEY=\"twoj-klucz\"${NC}"
echo -e "  ${CYAN}export OPENAI_API_KEY=\"twoj-klucz\"${NC}"
echo -e "  ${CYAN}export DEEPSEEK_API_KEY=\"twoj-klucz\"${NC}"
echo ""
