#!/bin/bash
# 系统信息检测函数

detect() {
    # 固件变体检测（通过元包判断）
    local variant="unknown"

    # 按照优先级检测固件变体
    local variant="unknown"
    if dpkg-query -W bianbu-star >/dev/null 2>&1; then
        variant="star"
    elif dpkg-query -W bianbu-desktop >/dev/null 2>&1; then
        variant="desktop"
    elif dpkg-query -W bianbu-lxqt >/dev/null 2>&1; then
        variant="lxqt"
    elif dpkg-query -W bianbu-minimal >/dev/null 2>&1; then
        variant="minimal"
    fi
    # 板型检测
    # spacemit k1-x MUSE-Pi-Pro board
    local board_model="/proc/device-tree/model"
    local board="unknown"
    if [ -f $board_model ]; then
        local full_model=$(tr -d '\0' < $board_model)
        # 移除开头的spacemit和结尾的board，将空格替换为-，并统一为小写
        # k1-x-muse-pi-pro
        board=$(echo "$full_model" | sed -E 's/^spacemit +//i' | sed -E 's/ +board$//i' | tr ' ' '-' | tr '[:upper:]' '[:lower:]')
    fi

    # minimal m1-muse-book
    # star k1-x-muse-pi-pro
    echo "${variant} ${board}"
}

# 改进日志函数
log_info() {
    echo "[INFO] $@"
}

log_warn() {
    echo "[WARN] $@" >&2
}

log_error() {
    echo "[ERROR] $@" >&2
}

# 检查当前脚本是否已执行过
# 用法: is_script_executed [强制执行]
# 返回: 1 如果已执行过, 0 如果尚未执行过
is_script_executed() {
    # 自动获取调用脚本的路径和名称
    local script_path=$(readlink -f "$0")
    local script_dir=$(dirname "$script_path")
    local parent_dir=$(basename "$(dirname "$script_dir")")
    local script_name=$(basename "$script_path")
    
    # 生成两级目录标记名: basic_50-mutter-config
    local mark_name="${parent_dir}_${script_name}"
    
    local force="${1:-false}"
    local mark_file="/var/lib/bianbu-config/${mark_name}_done"
    
    # 创建目录（如果不存在）
    mkdir -p /var/lib/bianbu-config
    
    # 检查标记文件是否存在
        if [ -f "$mark_file" ] && [ "$force" != "true" ]; then
        log_info "脚本 '$mark_name' 已执行过，跳过执行"
        return 0  # 已执行过
    fi
    
    log_info "脚本 '$mark_name' 尚未执行，开始执行"
    return 1  # 尚未执行过
}

# 标记当前脚本已执行
# 用法: mark_script_executed
mark_script_executed() {
    # 自动获取调用脚本的路径和名称
    local script_path=$(readlink -f "$0")
    local script_dir=$(dirname "$script_path")
    local parent_dir=$(basename "$(dirname "$script_dir")")
    local script_name=$(basename "$script_path")
    
    # 生成两级目录标记名: basic_50-mutter-config
    local mark_name="${parent_dir}_${script_name}"
    
    local mark_file="/var/lib/bianbu-config/${mark_name}_done"
    
    touch "$mark_file"
    echo "脚本 '$mark_name' 已标记为执行完成"
}
