#!/bin/bash
# ======================================================
#  upload-to-web.command
#  一鍵上傳檔案/資料夾到 Lingo1516.github.io
#  用法：把檔案或資料夾拖到這個檔案上
#  或直接在終端機執行：./upload-to-web.command <路徑>
# ======================================================

GIT_DIR="$HOME/Desktop/Lingo1516.github.io"
SITE_URL="https://lingo1516.github.io"

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

echo -e "${CYAN}========================================${NC}"
echo -e "${CYAN}  🌐 一鍵上傳到 GitHub Pages${NC}"
echo -e "${CYAN}========================================${NC}"

# 檢查 Git repo 是否存在
if [ ! -d "$GIT_DIR/.git" ]; then
    echo -e "${RED}❌ 錯誤：找不到 $GIT_DIR${NC}"
    echo "   請確認 Desktop 上有 Lingo1516.github.io 資料夾"
    exit 1
fi

# 取得要上傳的檔案路徑
TARGET=""
if [ $# -ge 1 ]; then
    TARGET="$1"
else
    echo ""
    echo -e "${YELLOW}請選擇要上傳的檔案或資料夾：${NC}"
    echo "  拖曳檔案/資料夾到這裡，然後按 Enter"
    read -r TARGET
fi

# 去掉可能的路徑引號
TARGET=$(echo "$TARGET" | sed 's/^ *//;s/ *$//' | sed 's/^"//;s/"$//' | sed "s/^'//;s/'$//")

if [ -z "$TARGET" ] || [ ! -e "$TARGET" ]; then
    echo -e "${RED}❌ 錯誤：找不到檔案/資料夾${NC}"
    echo "   路徑：$TARGET"
    echo ""
    echo -e "${YELLOW}請按 Enter 關閉${NC}"
    read -r
    exit 1
fi

BASENAME=$(basename "$TARGET")
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")

# 決定目標名稱
echo ""
echo -e "${CYAN}📝 目標路徑名稱（不含副檔名）：${NC}"
echo -e "   ${YELLOW}[Enter]${NC} 自動用時間戳：${TIMESTAMP}"
echo -e "   ${YELLOW}[自訂]${NC} 輸入你要的名稱"
read -r CUSTOM_NAME

if [ -z "$CUSTOM_NAME" ]; then
    DEST_NAME="${TIMESTAMP}"
else
    DEST_NAME="${CUSTOM_NAME}"
fi

# 判斷是單一檔案還是資料夾
cd "$GIT_DIR" || exit 1

if [ -d "$TARGET" ]; then
    # 是資料夾
    DEST_PATH="$GIT_DIR/$DEST_NAME"
    echo -e "${GREEN}📂 上傳資料夾 → ${DEST_NAME}/${NC}"
    cp -R "$TARGET/" "$DEST_PATH/"
    INDEX_FILE="$DEST_PATH/$DEST_NAME"
    ACTUAL_URL="$SITE_URL/$DEST_NAME/"
else
    # 是單一檔案
    EXT="${BASENAME##*.}"
    if [ "$BASENAME" = "$EXT" ]; then
        DEST_FILENAME="$DEST_NAME"
    else
        DEST_FILENAME="${DEST_NAME}.${EXT}"
    fi
    echo -e "${GREEN}📄 上傳檔案 → ${DEST_FILENAME}${NC}"
    cp "$TARGET" "$GIT_DIR/$DEST_FILENAME"
    ACTUAL_URL="$SITE_URL/$DEST_FILENAME"
fi

# Git 操作
echo ""
echo -e "${CYAN}⬆️  正在上傳到 GitHub...${NC}"

git add -A 2>/dev/null
git commit -m "upload: $DEST_NAME" --quiet
if git push origin main 2>&1; then
    echo ""
    echo -e "${GREEN}✅ 上傳成功！${NC}"
    echo ""
    echo -e "${CYAN}🔗 網址：${NC}"
    echo -e "${GREEN}$ACTUAL_URL${NC}"
    echo ""

    # 複製到剪貼簿
    echo -n "$ACTUAL_URL" | pbcopy
    echo -e "${YELLOW}📋 已複製到剪貼簿！${NC}"

    # 在瀏覽器開啟
    open "$ACTUAL_URL"
else
    echo ""
    echo -e "${RED}❌ 上傳失敗，請檢查網路連線${NC}"
fi

echo ""
echo -e "${YELLOW}按 Enter 關閉${NC}"
read -r
