@echo off
REM 后端Docker镜像构建脚本 (Windows版本)
REM 用于构建若依后端应用的Docker镜像

setlocal enabledelayedexpansion

REM 脚本配置
set "SCRIPT_DIR=%~dp0"
set "PROJECT_ROOT=%SCRIPT_DIR%..\..\"
set "IMAGE_NAME=anxin-backend"
set "IMAGE_TAG=latest"
set "NO_CACHE="
set "CLEAN_BUILD="

REM 解析命令行参数
:parse_args
if "%~1"=="" goto :check_docker
if "%~1"=="-t" (
    set "IMAGE_TAG=%~2"
    shift
    shift
    goto :parse_args
)
if "%~1"=="--tag" (
    set "IMAGE_TAG=%~2"
    shift
    shift
    goto :parse_args
)
if "%~1"=="-n" (
    set "IMAGE_NAME=%~2"
    shift
    shift
    goto :parse_args
)
if "%~1"=="--name" (
    set "IMAGE_NAME=%~2"
    shift
    shift
    goto :parse_args
)
if "%~1"=="--no-cache" (
    set "NO_CACHE=--no-cache"
    shift
    goto :parse_args
)
if "%~1"=="--clean" (
    set "CLEAN_BUILD=true"
    shift
    goto :parse_args
)
if "%~1"=="-h" goto :show_help
if "%~1"=="--help" goto :show_help

echo [ERROR] 未知参数: %~1
goto :show_help

:show_help
echo.
echo 后端Docker镜像构建脚本
echo.
echo 用法: %~nx0 [选项]
echo.
echo 选项:
echo     -t, --tag TAG       设置镜像标签 (默认: latest)
echo     -n, --name NAME     设置镜像名称 (默认: anxin-backend)
echo     --no-cache          不使用缓存构建
echo     --clean             构建前清理Maven缓存
echo     -h, --help          显示此帮助信息
echo.
echo 示例:
echo     %~nx0                          # 使用默认设置构建
echo     %~nx0 -t v1.0.0               # 构建并标记为v1.0.0
echo     %~nx0 --no-cache              # 不使用缓存构建
echo     %~nx0 --clean -t dev          # 清理后构建dev版本
echo.
exit /b 0

:check_docker
echo [INFO] 检查Docker环境...
docker --version >nul 2>&1
if errorlevel 1 (
    echo [ERROR] Docker未安装或不在PATH中
    exit /b 1
)

docker info >nul 2>&1
if errorlevel 1 (
    echo [ERROR] Docker守护进程未运行
    exit /b 1
)

:clean_maven
if "%CLEAN_BUILD%"=="true" (
    echo [INFO] 清理Maven缓存...
    cd /d "%PROJECT_ROOT%"
    where mvn >nul 2>&1
    if not errorlevel 1 (
        mvn clean
    ) else (
        echo [WARNING] Maven未安装，跳过清理步骤
    )
)

:build_image
echo [INFO] 开始构建Docker镜像...
echo [INFO] 项目根目录: %PROJECT_ROOT%
echo [INFO] 镜像名称: %IMAGE_NAME%:%IMAGE_TAG%

cd /d "%PROJECT_ROOT%"

echo [INFO] 执行构建命令...
docker build -f docker/backend/Dockerfile -t %IMAGE_NAME%:%IMAGE_TAG% %NO_CACHE% .

if errorlevel 1 (
    echo [ERROR] Docker镜像构建失败
    exit /b 1
)

echo [SUCCESS] Docker镜像构建成功: %IMAGE_NAME%:%IMAGE_TAG%

:show_image_info
echo [INFO] 镜像信息:
docker images %IMAGE_NAME%:%IMAGE_TAG%

echo [SUCCESS] 构建完成!
echo [INFO] 运行镜像: docker run -d -p 8080:8080 --name anxin-backend-container %IMAGE_NAME%:%IMAGE_TAG%

endlocal