#!/usr/bin/env bash
# ██████╗ ██╗  ██╗ █████╗ ███╗   ██╗████████╗ ██████╗ ███╗   ███╗
# ██╔══██╗██║  ██║██╔══██╗████╗  ██║╚══██╔══╝██╔═══██╗████╗ ████║
# ██████╔╝███████║███████║██╔██╗ ██║   ██║   ██║   ██║██╔████╔██║
# ██╔═══╝ ██╔══██║██╔══██║██║╚██╗██║   ██║   ██║   ██║██║╚██╔╝██║
# ██║     ██║  ██║██║  ██║██║ ╚████║   ██║   ╚██████╔╝██║ ╚═╝ ██║
# ╚═╝     ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═══╝   ╚═╝    ╚═════╝ ╚═╝     ╚═╝
#
# get.phantom.tc — Phantom-WG Modern Installer
# Fetches production files via sparse checkout. Does not start services.
#
# Usage:
#   curl -sSL get.phantom.tc | bash
#   curl -sSL get.phantom.tc | bash -s -- /opt/phantom-wg
# ──────────────────────────────────────────────────────────────────

set -euo pipefail

REPO="https://github.com/ARAS-Workspace/phantom-wg.git"
BRANCH="main"
TARGET="${1:-phantom-wg}"

# ── Colors ────────────────────────────────────────────────────────

red()   { printf "\033[31m%s\033[0m\n" "$*"; }
green() { printf "\033[32m%s\033[0m\n" "$*"; }
bold()  { printf "\033[1m%s\033[0m\n" "$*"; }
info()  { printf "  \033[32m[✓]\033[0m %s\n" "$*"; }
warn()  { printf "  \033[33m[!]\033[0m %s\n" "$*"; }
fail()  { printf "  \033[31m[✗]\033[0m %s\n" "$*"; }

# ── Header ────────────────────────────────────────────────────────

echo ""
bold "Phantom-WG — Get"
echo "=============================="
echo ""

# ── Check: git ────────────────────────────────────────────────────

if command -v git &>/dev/null; then
    info "git found ($(git --version | awk '{print $3}'))"
else
    warn "git not found — attempting install..."

    if command -v apt-get &>/dev/null; then
        sudo apt-get update -qq && sudo apt-get install -y -qq git
    elif command -v yum &>/dev/null; then
        sudo yum install -y -q git
    elif command -v apk &>/dev/null; then
        sudo apk add --quiet git
    elif command -v pacman &>/dev/null; then
        sudo pacman -S --noconfirm git
    else
        fail "Cannot install git — unknown package manager"
        fail "Install git manually and re-run this script."
        exit 1
    fi

    if command -v git &>/dev/null; then
        info "git installed ($(git --version | awk '{print $3}'))"
    else
        fail "git installation failed"
        exit 1
    fi
fi

# ── Check: target directory ───────────────────────────────────────

if [[ -d "$TARGET" ]]; then
    fail "Directory '$TARGET' already exists."
    fail "Remove it or specify a different path:"
    echo "  curl -sSL get.phantom.tc | bash -s -- /your/path"
    exit 1
fi

# ── Clone (sparse) ───────────────────────────────────────────────

bold "Cloning..."

git clone --depth 1 --filter=blob:none --sparse --branch "$BRANCH" "$REPO" "$TARGET" 2>/dev/null

cd "$TARGET"

git sparse-checkout set --no-cone \
    '/phantom_daemon' \
    '/services' \
    '/tools' \
    '/container-data' \
    '/Dockerfile' \
    '/docker-compose.yml' \
    '/requirements.txt' \
    '/.env.daemon.example' \
    '/.env.auth-service.example' \
    '/SETUP' \
    '/UPDATE' \
    '/LICENSE' \
    '/THIRD_PARTY_LICENSES'

FILE_COUNT=$(find . -not -path './.git/*' -type f | wc -l | tr -d ' ')
info "Cloned — ${FILE_COUNT} files"

# ── Check: Docker ─────────────────────────────────────────────────

echo ""
if command -v docker &>/dev/null; then
    DOCKER_VERSION=$(docker --version | awk '{print $3}' | tr -d ',')
    info "Docker found (${DOCKER_VERSION})"

    if docker compose version &>/dev/null; then
        COMPOSE_VERSION=$(docker compose version --short)
        info "Docker Compose found (${COMPOSE_VERSION})"
    else
        warn "Docker Compose v2 not found"
        warn "Install from: https://docs.docker.com/compose/install/"
    fi
else
    warn "Docker not found"
    warn "Install from: https://docs.docker.com/engine/install/"
fi

# ── Check: bash ───────────────────────────────────────────────────

if [[ -n "${BASH_VERSION:-}" ]]; then
    info "bash ${BASH_VERSION}"
else
    warn "bash version unknown"
fi

# ── Summary ───────────────────────────────────────────────────────

echo ""
bold "Download complete."
echo ""
echo "  Location: $(pwd)"
echo ""
bold "Next steps:"
echo "  cd ${TARGET}"
echo "  cat SETUP"
echo "  ./tools/prod.sh setup"
echo "  nano .env.daemon              # set WIREGUARD_ENDPOINT_V4"
echo "                                # set WIREGUARD_ENDPOINT_V6 (optional)"
echo "  ./tools/prod.sh up"
echo ""
bold "Documentation: https://www.phantom.tc/docs"
echo ""
