
pwd
ls -a
echo "开始"
# rm -rf gradle-home
rm -rf android-sdk-1.0.1.zip
mkdir -p gradle-home

echo "0------------------------"
ZIP_FILE="gradle-1.0.2-1.0.2-org.df.tar.gz"
DEST_DIR="gradle-home"
NEXUS_URL="http://25.12.10.69:8081"
ZIP_URL="${NEXUS_URL}/repository/gradle-release/org/df/gradle-1.0.2/1.0.2/${ZIP_FILE}"
MD5_URL="${ZIP_URL}.md5"  # MD5 文件的直接链接

# 错误处理函数
handle_error() {
    echo "错误：$1"
    exit 1
}

# 获取远程MD5值
get_remote_md5() {
    local remote_md5=$(wget -q -O - "$MD5_URL" | awk '{print $1}')
    if [ -z "$remote_md5" ]; then
        handle_error "无法获取远程MD5校验值"
    fi
    echo "$remote_md5"
}

# 获取本地MD5值
get_local_md5() {
    if [ -f "$ZIP_FILE" ]; then
        md5sum "$ZIP_FILE" | awk '{print $1}'
    else
        echo ""
    fi
}


remote_md5=$(get_remote_md5)
local_md5=$(get_local_md5)

# 3. 比较MD5值
if [ "$remote_md5" = "$local_md5" ]; then
    echo "MD5校验值匹配，无需下载更新"
    
    # 检查是否需要解压（如果目标目录为空）
    if [ ! -d "$DEST_DIR" ] || [ -z "$(ls -A "$DEST_DIR")" ]; then
        echo "目标目录为空，开始解压..."
        mkdir -p "$DEST_DIR"
        tar -xzvf "$ZIP_FILE" -C "$DEST_DIR" --strip-components=1 || handle_error "解压失败"
        echo "解压完成"
    else
        echo "目标目录非空，跳过解压"
    fi
    
    exit 0
fi

echo "MD5校验值不匹配或文件不存在，开始更新..."

# 4. 尝试删除已存在的文件和文件夹
echo "正在清理旧文件..."
rm -rf "$ZIP_FILE" "$DEST_DIR" || handle_error "清理失败"
echo "清理完成"

# 5. 下载ZIP文件
echo "开始下载 $ZIP_FILE..."
wget -q "$ZIP_URL" -O "$ZIP_FILE" || handle_error "下载失败"
echo "下载完成"

# 6. 验证下载后的MD5（使用已获取的remote_md5，无需重新获取）
new_local_md5=$(get_local_md5)
if [ "$new_local_md5" != "$remote_md5" ]; then
    handle_error "下载的文件MD5校验失败: 本地=$new_local_md5, 远程=$remote_md5"
fi
echo "MD5校验成功"

# 7. 创建目标目录
mkdir -p "$DEST_DIR" || handle_error "创建目录失败"

# 8. 解压文件
echo "正在解压..."
tar -xzvf "$ZIP_FILE" -C "$DEST_DIR" --strip-components=1 || handle_error "解压失败"
echo "解压完成，文件已提取到 $DEST_DIR"
ls -a