#!/usr/bin/env bash
# ==============================================================================
#  DJINN LLM — 1-Click Standalone Installer
#  Cross-Platform: Linux (Ubuntu/Debian/Arch/Fedora), macOS (M1/M2/M3/M4 & Intel),
#                  FreeBSD, OpenBSD, and Unix systems.
# ==============================================================================

set -e

RED='\033[0;31m'
GREEN='\033[0;32m'
CYAN='\033[0;36m'
YELLOW='\033[1;33m'
BOLD='\033[1m'
NC='\033[0m'

echo -e "${CYAN}${BOLD}"
cat << 'EOF'
     ██████╗      ██╗██╗███╗   ██╗███╗   ██╗
     ██╔══██╗     ██║██║████╗  ██║████╗  ██║
     ██║  ██║     ██║██║██╔██╗ ██║██╔██╗ ██║
     ██║  ██║██   ██║██║██║╚██╗██║██║╚██╗██║
     ██████╔╝╚█████╔╝██║██║ ╚████║██║ ╚████║
     ╚═════╝  ╚════╝ ╚═╝╚═╝  ╚═══╝╚═╝  ╚═══╝
   Sovereign Cognitive Workstation · Standalone
EOF
echo -e "${NC}"

INSTALL_DIR="${HOME}/.djinn"
OS_TYPE="$(uname -s)"
ARCH_TYPE="$(uname -m)"

echo -e "${GREEN}==>${NC} Detected Operating System: ${BOLD}${OS_TYPE} (${ARCH_TYPE})${NC}"

# Check for Python 3
if ! command -v python3 &> /dev/null; then
  echo -e "${RED}Error: python3 is not installed.${NC}"
  if [ "$OS_TYPE" = "Darwin" ]; then
    echo "Please install python3 via Homebrew: brew install python"
  elif command -v apt-get &> /dev/null; then
    echo "Please run: sudo apt update && sudo apt install -y python3 python3-venv python3-pip"
  elif command -v pacman &> /dev/null; then
    echo "Please run: sudo pacman -S python python-pip"
  elif command -v dnf &> /dev/null; then
    echo "Please run: sudo dnf install -y python3 python3-pip"
  fi
  exit 1
fi

PY_VER="$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
echo -e "${GREEN}==>${NC} Found Python ${PY_VER}"

# Download standalone package from active server
echo -e "${GREEN}==>${NC} Installing to: ${INSTALL_DIR} ..."
mkdir -p "${INSTALL_DIR}"
cd "${INSTALL_DIR}"

PACKAGE_URL="${DJINN_REMOTE_URL:-https://djinnllm.digitalnation.info}/api/download/linux"
echo -e "${CYAN}==>${NC} Fetching standalone core from ${PACKAGE_URL} ..."

if command -v curl &> /dev/null; then
  curl -fsSL "${PACKAGE_URL}" -o djinn-pkg.tar.gz
elif command -v wget &> /dev/null; then
  wget -q "${PACKAGE_URL}" -O djinn-pkg.tar.gz
else
  echo -e "${RED}Error: curl or wget is required.${NC}"
  exit 1
fi

echo -e "${GREEN}==>${NC} Extracting application files..."
tar -xzf djinn-pkg.tar.gz
rm -f djinn-pkg.tar.gz

# Setup virtual environment
echo -e "${GREEN}==>${NC} Creating isolated Python virtual environment..."
python3 -m venv .venv || {
  echo -e "${YELLOW}Warning: python3-venv needed. Trying alternative virtual environment...${NC}"
  python3 -m pip install --user virtualenv
  python3 -m virtualenv .venv
}

echo -e "${GREEN}==>${NC} Installing dependencies..."
.venv/bin/pip install --upgrade pip -q
.venv/bin/pip install -r requirements.txt -q

# Create launcher binary
BIN_DIR="${HOME}/.local/bin"
mkdir -p "${BIN_DIR}"
cat << 'EOF' > "${BIN_DIR}/djinn"
#!/usr/bin/env bash
INSTALL_DIR="${HOME}/.djinn"
cd "${INSTALL_DIR}"
echo -e "\033[1;36m[DJINN LLM]\033[0m Launching Sovereign Cognitive Workstation on http://127.0.0.1:8000 ..."
# Open browser if possible
if command -v xdg-open &> /dev/null; then
  (sleep 2 && xdg-open "http://127.0.0.1:8000") &
elif command -v open &> /dev/null; then
  (sleep 2 && open "http://127.0.0.1:8000") &
fi
exec "${INSTALL_DIR}/.venv/bin/python3" run.py
EOF
chmod +x "${BIN_DIR}/djinn"

# If macOS, create double-clickable .command file on Desktop
if [ "$OS_TYPE" = "Darwin" ]; then
  cat << 'EOF' > "${HOME}/Desktop/DJINN LLM.command"
#!/usr/bin/env bash
cd "${HOME}/.djinn"
(sleep 2 && open "http://127.0.0.1:8000") &
exec .venv/bin/python3 run.py
EOF
  chmod +x "${HOME}/Desktop/DJINN LLM.command"
  echo -e "${GREEN}==>${NC} Created Desktop Launcher: ${BOLD}${HOME}/Desktop/DJINN LLM.command${NC}"
fi

# If Linux Desktop, create .desktop entry
if [ "$OS_TYPE" = "Linux" ] && [ -d "${HOME}/.local/share/applications" ]; then
  cat << EOF > "${HOME}/.local/share/applications/djinn-llm.desktop"
[Desktop Entry]
Name=DJINN LLM
Comment=Sovereign Cognitive Workstation
Exec=${BIN_DIR}/djinn
Icon=${INSTALL_DIR}/static/icon.svg
Terminal=true
Type=Application
Categories=Development;Utility;ArtificialIntelligence;
EOF
  chmod +x "${HOME}/.local/share/applications/djinn-llm.desktop"
  echo -e "${GREEN}==>${NC} Registered desktop application: ${BOLD}djinn-llm.desktop${NC}"
fi

echo ""
echo -e "${GREEN}${BOLD}================================================================${NC}"
echo -e "${GREEN}${BOLD}✔ DJINN LLM Standalone Installation Complete!${NC}"
echo -e "${CYAN}• Executable:${NC} ${BIN_DIR}/djinn"
echo -e "${CYAN}• Directory:${NC}  ${INSTALL_DIR}"
echo -e "${CYAN}• Start now:${NC}   type ${BOLD}djinn${NC} or run: ${BOLD}${BIN_DIR}/djinn${NC}"
echo -e "${GREEN}${BOLD}================================================================${NC}"
