#!/usr/bin/env bash
# ============================================================
# KUL IDEAI — Linux Installer (Fedora/Ubuntu/Arch/Debian)
# https://webstree.com — Webstree AI yerel asistan kurulumu
# ============================================================
set -euo pipefail

RESET='\033[0m'
BOLD='\033[1m'
CYAN='\033[36m'
GREEN='\033[32m'
YELLOW='\033[33m'
RED='\033[31m'
DIM='\033[2m'

log()  { printf "${CYAN}[ideai]${RESET} %s\n" "$*"; }
ok()   { printf "${GREEN}[✓]${RESET} %s\n" "$*"; }
warn() { printf "${YELLOW}[!]${RESET} %s\n" "$*"; }
err()  { printf "${RED}[✗]${RESET} %s\n" "$*" >&2; }

banner() {
  printf "\n${BOLD}${CYAN}"
  cat <<'EOF'
   _  __ _   _ _        ___ ____  _____ _    ___
  | |/ /| | | | |      |_ _|  _ \| ____/ \  |_ _|
  | ' / | | | | |       | || | | |  _|/ _ \  | |
  | . \ | |_| | |___    | || |_| | |__/ ___ \ | |
  |_|\_\ \___/|_____|  |___|____/|_____/   \_\___|

EOF
  printf "${DIM}  Webstree AI — Yerel yapay zeka asistanı${RESET}\n"
  printf "${DIM}  Qwen3.6:35b + Ollama + Kul fine-tuned${RESET}\n\n"
}

need_cmd() {
  if ! command -v "$1" >/dev/null 2>&1; then
    err "$1 bulunamadı. Lütfen önce kur: $2"
    exit 1
  fi
}

detect_distro() {
  if [ -f /etc/os-release ]; then
    . /etc/os-release
    echo "$ID"
  else
    echo "unknown"
  fi
}

install_ollama() {
  if command -v ollama >/dev/null 2>&1; then
    ok "Ollama zaten kurulu ($(ollama --version 2>/dev/null | head -1))"
    return
  fi
  log "Ollama kuruluyor..."
  curl -fsSL https://ollama.com/install.sh | sh
  ok "Ollama kuruldu"
}

enable_ollama_service() {
  if systemctl list-unit-files ollama.service >/dev/null 2>&1; then
    sudo systemctl enable --now ollama || true
    ok "Ollama servisi aktif"
  else
    warn "Ollama systemd unit bulunamadı — manuel: 'ollama serve &'"
  fi
}

pull_models() {
  log "Qwen3.6:35b modeli çekiliyor (~23GB, süre alabilir)..."
  ollama pull qwen3.6:35b
  ok "qwen3.6:35b hazır"

  log "Kul fine-tuned model kontrol ediliyor..."
  if curl -fsSL -o /dev/null --head -w "%{http_code}" https://webstree.com/api/kul/manifest 2>/dev/null | grep -q "200"; then
    log "webstree-kul:35b indiriliyor (fine-tuned Kul)..."
    ollama pull webstree-kul:35b 2>/dev/null || warn "Kul modeli henüz yayında değil (fine-tune devam ediyor)"
  else
    warn "Kul modeli henüz yayında değil — qwen3.6:35b ile devam"
  fi
}

install_ideai_cli() {
  local BIN_DIR="${HOME}/.local/bin"
  mkdir -p "$BIN_DIR"

  log "IDEAI CLI kuruluyor → ${BIN_DIR}/ideai"
  cat > "${BIN_DIR}/ideai" <<'IDEAI'
#!/usr/bin/env bash
# IDEAI — Webstree Kul CLI wrapper
MODEL="${IDEAI_MODEL:-webstree-kul:35b}"
if ! ollama list 2>/dev/null | grep -q "$MODEL"; then
  MODEL="qwen3.6:35b"
fi
if [ $# -eq 0 ]; then
  exec ollama run "$MODEL"
else
  exec ollama run "$MODEL" "$@"
fi
IDEAI
  chmod +x "${BIN_DIR}/ideai"
  ok "IDEAI CLI hazır: ${BIN_DIR}/ideai"
}

install_desktop_integration() {
  local APP_DIR="${HOME}/.local/share/applications"
  mkdir -p "$APP_DIR"

  cat > "${APP_DIR}/ideai.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=Kul IDEAI
Comment=Webstree AI — Yerel yapay zeka asistanı
Exec=gnome-terminal --title="Kul IDEAI" -- bash -c "${HOME}/.local/bin/ideai; exec bash"
Icon=utilities-terminal
Terminal=false
Categories=Development;AI;Utility;
Keywords=ai;ollama;kul;webstree;
EOF
  ok "Masaüstü kısayolu oluşturuldu"
}

create_config() {
  local CFG_DIR="${HOME}/.config/ideai"
  mkdir -p "$CFG_DIR"
  cat > "${CFG_DIR}/config.json" <<EOF
{
  "version": "1.0.0",
  "model": "webstree-kul:35b",
  "fallback_model": "qwen3.6:35b",
  "ollama_host": "http://127.0.0.1:11434",
  "theme": "dark",
  "primary_color": "#5d00ff",
  "telemetry": false,
  "installed_at": "$(date -Iseconds)",
  "platform": "linux"
}
EOF
  ok "Yapılandırma: ${CFG_DIR}/config.json"
}

main() {
  banner
  log "Dağıtım: $(detect_distro)"
  need_cmd curl "dnf/apt ile kur"
  install_ollama
  enable_ollama_service
  pull_models
  install_ideai_cli
  install_desktop_integration
  create_config

  printf "\n${BOLD}${GREEN}═══════════════════════════════════════════════${RESET}\n"
  printf "${BOLD}${GREEN}  ✓ Kurulum tamamlandı!${RESET}\n"
  printf "${BOLD}${GREEN}═══════════════════════════════════════════════${RESET}\n\n"
  printf "Kullanım:\n"
  printf "  ${CYAN}ideai${RESET}              — interaktif chat\n"
  printf "  ${CYAN}ideai 'Merhaba'${RESET}    — tek soru\n"
  printf "  ${CYAN}ollama list${RESET}        — yüklü modeller\n\n"
  printf "${DIM}https://webstree.com/docs/ideai${RESET}\n\n"
}

main "$@"
