#!/bin/bash

if [ -n "${PROXY_HOST}" ]; then
    CURL_OPTIONS="-sL -x ${PROXY_HOST}"
    PIP_OPTIONS="--proxy=${PROXY_HOST}"
    echo "使用代理更新程序"
else
    CURL_OPTIONS="-sL"
    echo "不使用代理更新程序"
fi

if [ "${MOVIEPILOT_AUTO_UPDATE_DEV}" = "true" ]; then
    echo "Dev 更新模式"
    curl ${CURL_OPTIONS} "https://github.com/jxxghp/MoviePilot/archive/refs/heads/main.zip" | busybox unzip -d /tmp -
    if [ $? -eq 0 ]; then
        mv /tmp/MoviePilot-main /tmp/app
        echo "后端程序下载成功"
        # 重新安装依赖
        pip install ${PIP_OPTIONS} --upgrade pip
        pip install ${PIP_OPTIONS} -r /tmp/app/requirements.txt
        if [ $? -eq 0 ]; then
            echo "安装依赖成功"
            # 下载插件
            echo "正在下载插件..."
            curl ${CURL_OPTIONS} "https://github.com/jxxghp/MoviePilot-Plugins/archive/refs/heads/main.zip" | busybox unzip -d /tmp -
            if [ $? -eq 0 ]; then
                echo "插件下载成功"
                # 下载资源
                echo "正在下载资源包..."
                curl ${CURL_OPTIONS} "https://github.com/jxxghp/MoviePilot-Resources/archive/refs/heads/main.zip" | busybox unzip -d /tmp -
                if [ $? -eq 0 ]; then
                    echo "资源包下载成功"
                    # 检查前端最新版本
                    frontend_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases/latest" | jq -r .tag_name)
                    if [[ "${frontend_version}" == *v* ]]; then
                        echo "正在下载前端程序 ${frontend_version}..."
                        curl ${CURL_OPTIONS} "https://github.com/jxxghp/MoviePilot-Frontend/releases/download/${frontend_version}/dist.zip" | busybox unzip -d /tmp -
                        if [ $? -eq 0 ]; then
                            echo "前端程序下载成功"
                            rm -rf /app
                            mv /tmp/app /app
                            rm -rf /public
                            mv /tmp/dist /public
                            mv /tmp/MoviePilot-Plugins-main/plugins/* /app/app/plugins/
                            mv /tmp/MoviePilot-Resources-main/resources/* /app/app/helper/
                            mkdir -p /app/config/sites
                            mv /app/app/helper/user.sites.bin /app/config/sites/user.sites.bin
                            rm -rf /tmp/MoviePilot-*
                            echo "程序更新成功，前端版本：${frontend_version}"
                        else
                            echo "前端程序下载失败，继续使用旧的程序来启动..."
                        fi
                    else
                        echo "前端最新版本号获取失败，继续启动..."
                    fi
                else
                    echo "资源包下载失败，继续使用旧的程序来启动..."
                fi
            else
                echo "插件下载失败，继续使用旧的程序来启动..."
            fi
        else
            echo "安装依赖失败，请重新拉取镜像"
        fi
    else
        echo "后端程序下载失败，继续使用旧的程序来启动..."
    fi
else
    old_version=$(cat /app/version.py)
    if [[ "${old_version}" == *APP_VERSION* ]]; then
        current_version=v$(echo ${old_version} | sed -ne "s/APP_VERSION\s=\s'v\(.*\)'/\1/gp")
        echo "当前版本号：${current_version}"
        # 检查后端最新版本
        new_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot/releases/latest" | jq -r .tag_name)
        if [[ "${new_version}" == *v* ]]; then
            release_version=${new_version}
            echo "最新版本号：${release_version}"
            if [ "${current_version}" != "${release_version}" ]; then
                echo "发现新版本，开始自动升级..."
                echo "正在下载后端程序 ${release_version}..."
                curl ${CURL_OPTIONS} "https://github.com/jxxghp/MoviePilot/archive/refs/tags/${release_version}.zip" | busybox unzip -d /tmp -
                if [ $? -eq 0 ]; then
                    echo "后端程序下载成功"
                    # 重新安装依赖
                    pip install ${PIP_OPTIONS} --upgrade pip
                    pip install ${PIP_OPTIONS} -r /tmp/MoviePilot*/requirements.txt
                    if [ $? -eq 0 ]; then
                        echo "安装依赖成功"
                        # 下载插件
                        echo "正在下载插件..."
                        curl ${CURL_OPTIONS} "https://github.com/jxxghp/MoviePilot-Plugins/archive/refs/heads/main.zip" | busybox unzip -d /tmp -
                        if [ $? -eq 0 ]; then
                            echo "插件下载成功"
                            # 下载资源
                            echo "正在下载资源包..."
                            curl ${CURL_OPTIONS} "https://github.com/jxxghp/MoviePilot-Resources/archive/refs/heads/main.zip" | busybox unzip -d /tmp -
                            if [ $? -eq 0 ]; then
                                echo "资源包下载成功"
                                # 检查前端最新版本
                                frontend_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases/latest" | jq -r .tag_name)
                                if [[ "${frontend_version}" == *v* ]]; then
                                    echo "正在下载前端程序 ${frontend_version}..."
                                    curl ${CURL_OPTIONS} "https://github.com/jxxghp/MoviePilot-Frontend/releases/download/${frontend_version}/dist.zip" | busybox unzip -d /tmp -
                                    if [ $? -eq 0 ]; then
                                        echo "前端程序下载成功"
                                        rm -rf /app
                                        mv /tmp/MoviePilot* /app
                                        rm -rf /public
                                        mv /tmp/dist /public
                                        mv /tmp/MoviePilot-Plugins-main/plugins/* /app/app/plugins/
                                        mv /tmp/MoviePilot-Resources-main/resources/* /app/app/helper/
                                        mkdir -p /app/config/sites
                                        mv /app/app/helper/user.sites.bin /app/config/sites/user.sites.bin
                                        rm -rf /tmp/MoviePilot-*
                                        echo "程序更新成功，前端版本：${frontend_version}，后端版本：${release_version}"
                                    else
                                        echo "前端程序下载失败，继续使用旧的程序来启动..."
                                    fi
                                else
                                    echo "前端最新版本号获取失败，继续启动..."
                                fi
                            else
                                echo "资源包下载失败，继续使用旧的程序来启动..."
                            fi
                        else
                            echo "插件下载失败，继续使用旧的程序来启动..."
                        fi
                    else
                        echo "安装依赖失败，请重新拉取镜像"
                    fi
                else
                    echo "后端程序下载失败，继续使用旧的程序来启动..."
                fi
            else
                echo "未发现新版本，跳过更新步骤..."
            fi
        else
            echo "最新版本号获取失败，继续启动..."
        fi
    else
        echo "当前版本号获取失败，继续启动..."
    fi
fi