#!/bin/bash

log_file="auto_build.log"
lock_file="auto_build.lock"
timeout=600 # 超时时间,单位为秒

# 记录日志函数
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$$] $1" >> "$log_file"
}

# 记录开始执行日志
log "start"

# 检查是否有其他进程正在执行
while [ -f "$lock_file" ]; do
    another_pid=$(cat "$lock_file")
    log "另一个进程[$another_pid]正在执行,等待中……"
    sleep 5
    timeout=$((timeout - 1))
    if [ "$timeout" -le 0 ]; then
        log "等待超时,退出"
        exit 1
    fi
done

# 创建锁文件
echo $$ > "$lock_file"

# 执行git pull
execute() {
    log "$1"
    result=$(eval "$1" 2>&1)
    log "$result"
}

# 执行git pull
execute "git pull"

# 检查git pull执行结果
if [ $? -eq 0 ]; then
    # git pull执行成功,执行yarn install
    execute "yarn install"

    # 检查yarn install执行结果
    if [ $? -eq 0 ]; then
        # yarn install执行成功,执行yarn build
        execute "yarn build"

        # 检查yarn build执行结果
        if [ $? -ne 0 ]; then
            # yarn build执行失败,异常退出
            log "yarn build执行失败"
            rm "$lock_file"
            exit 1
        fi
	execute "rm -rf /www/wwwroot/book.wandoubaba.com/*"
	execute "cp dist/* /www/wwwroot/book.wandoubaba.com/ -r"
    else
        # yarn install执行失败,异常退出
        log "yarn install执行失败"
        rm "$lock_file"
        exit 1
    fi
else
    # git pull执行失败,异常退出
    log "git pull执行失败"
    rm "$lock_file"
    exit 1
fi

# 记录完成执行日志
log "done"

# 删除锁文件并正常退出
rm "$lock_file"
exit 0