#!/bin/bash
function deploy(){
    # 先删除配置文件，部署时不覆盖服务器上原有的配置文件
    if [ -f dist/otaConfig.js ]; then
        rm dist/otaConfig.js
    fi

    # OTA测试服务器上的配置文件相对路径需要修改一下，把index.html中的../otaConfig.js改为./otaConfig.js
    # 把文本文件index.html中的src='../otaConfig.js?v=替换为src='./otaConfig.js?v=
    sed -i "s/src='..\/otaConfig.js?v=/src='.\/otaConfig.js?v=/g" dist/index.html


    # 检查7z命令是否可用
    if ! command -v 7z >/dev/null 2>&1; then
        echo "请先运行 npm install -g 7zip 安装7zip命令行工具!"
        exit 1
    fi

    local username=$username_param
    local ip_address=$ip_address_param
    local folder_name=$folder_name_param
    local server_path=$server_path_param
    local zip_filename=$zip_filename_param

    # 压缩打包后的文件
    7z a $zip_filename ./dist/*

    if [ $? -eq 0 ]; then
        echo "压缩打包成功"
    else
        echo "压缩打包失败"
        return 1
    fi

    # 迁移压缩文件到服务器对应目录下
    (set -x;scp ./$zip_filename $username@$ip_address:$server_path)

    if [ $? -eq 0 ]; then
        echo "文件迁移成功"
    else
        echo "文件迁移失败"
        return 1
    fi

    # 本地删除上传后的压缩文件
    rm $zip_filename

    # 在服务器上解压缩文件
    # ssh $username@$ip_address "cd $server_path && unzip -o $zip_filename -d $folder_name && chmod -R 775 $folder_name && rm $zip_filename"
    # ota测试环境是直接放在frontend目录下的，故把文件夹的内容移动到frontend目录，并删除原目录
    # 需要先删除static目录，旧的static目录会导致mv不成功
    (set -x;ssh $username@$ip_address "cd $server_path && unzip -o $zip_filename -d $folder_name && chmod -R 775 $folder_name && rm $zip_filename && rm -rf static && mv $folder_name/* $server_path && rmdir $folder_name")

    if [ $? -eq 0 ]; then
        echo "解压缩成功"
    else
        echo "解压缩失败"
        return 1
    fi

    echo "恭喜："$folder_name_param"发布圆满成功!🎉🚀"
    return 0
}

# 调用build函数，并传递配置项参数
username_param="clear"
ip_address_param="192.168.30.152" # OTA测试环境
folder_name_param="my_awesome_ota" # 实际上没用，ota测试环境是直接放frontend文件夹里面，并非单独文件夹
server_path_param="/home/clear/frontend/"
zip_filename_param="build.zip"

deploy

###################################################
# 使用git-bash来运行npm run deploy:dev
# 在Windows上使用npm install -g 7zip来安装7z命令
# selfMarketing名字不可随意更改，否则覆盖服务器相关文件夹
# 测试环境暂时没有备份机制
###################################################
