#!/bin/bash
# ===================================================================
# TK Factory Services - 배포 상태 확인 (맥북에서 실행)
# ===================================================================
# 사용법: ./scripts/check-version.sh
# 설정:   ~/.tk-deploy-config
# ===================================================================

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
CONFIG_FILE="$HOME/.tk-deploy-config"

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

# === 설정 로드 ===
if [ ! -f "$CONFIG_FILE" ]; then
  echo -e "${RED}ERROR: 설정 파일이 없습니다: $CONFIG_FILE${NC}"
  exit 1
fi

source "$CONFIG_FILE"

DOCKER="/usr/local/bin/docker"

ssh_cmd() {
  ssh -o ConnectTimeout=10 "${NAS_USER}@${NAS_HOST}" "$@"
}

# === NAS 배포 버전 확인 ===
echo "=== TK Factory Services - 배포 상태 ==="
echo ""

echo -e "${CYAN}[NAS 배포 버전]${NC}"
NAS_INFO=$(ssh_cmd "cd ${NAS_DEPLOY_PATH} && git log -1 --format='%H|%s|%ci'" 2>/dev/null || echo "")

if [ -z "$NAS_INFO" ]; then
  echo -e "  ${RED}NAS에서 git 정보를 가져올 수 없습니다${NC}"
  exit 1
fi

NAS_HASH=$(echo "$NAS_INFO" | cut -d'|' -f1)
NAS_MSG=$(echo "$NAS_INFO" | cut -d'|' -f2)
NAS_DATE=$(echo "$NAS_INFO" | cut -d'|' -f3)
NAS_SHORT="${NAS_HASH:0:7}"

echo "  커밋:  ${NAS_SHORT} - ${NAS_MSG}"
echo "  날짜:  ${NAS_DATE}"

# === origin/main 대비 상태 ===
echo ""
echo -e "${CYAN}[origin/main 대비]${NC}"

cd "$PROJECT_DIR"
git fetch origin --quiet

LOCAL_BRANCH=$(git rev-parse --abbrev-ref HEAD)
ORIGIN_HASH=$(git rev-parse "origin/${LOCAL_BRANCH}" 2>/dev/null || echo "")

if [ -n "$ORIGIN_HASH" ]; then
  if [ "$NAS_HASH" = "$ORIGIN_HASH" ]; then
    echo -e "  ${GREEN}최신 상태${NC} (origin/${LOCAL_BRANCH}과 동일)"
  else
    BEHIND_COUNT=$(git log "${NAS_HASH}..${ORIGIN_HASH}" --oneline 2>/dev/null | wc -l | tr -d ' ')
    if [ "$BEHIND_COUNT" -gt 0 ]; then
      echo -e "  ${YELLOW}${BEHIND_COUNT}개 커밋 뒤처짐${NC}"
      echo ""
      echo "  미배포 커밋:"
      git log "${NAS_HASH}..${ORIGIN_HASH}" --oneline --no-decorate | sed 's/^/    /'
    else
      echo -e "  ${YELLOW}NAS가 origin보다 앞서 있거나 브랜치가 다릅니다${NC}"
    fi
  fi
fi

# === Docker 컨테이너 상태 ===
echo ""
echo -e "${CYAN}[Docker 컨테이너 상태]${NC}"
ssh_cmd "cd ${NAS_DEPLOY_PATH} && echo '${NAS_SUDO_PASS}' | sudo -S ${DOCKER} compose ps --format 'table {{.Name}}\t{{.Status}}'" 2>&1 | grep -v '^\[sudo\]' || echo "  컨테이너 상태를 가져올 수 없습니다"

# === 최근 배포 로그 ===
echo ""
echo -e "${CYAN}[최근 배포 로그]${NC}"
ssh_cmd "tail -5 ${NAS_DEPLOY_PATH}/DEPLOY_LOG" 2>/dev/null | sed 's/^/  /' || echo "  배포 로그가 없습니다"
