#!/bin/bash
DEBNAME=kylin-wine-assistant
set_wine_default_app() {
    local defaults_file="${HOME}/.local/share/applications/defaults.list"
    local backup_file="${defaults_file}.bak"
    
    # 检查文件是否存在
    if [ ! -f "$defaults_file" ]; then
        echo "Warning: ${defaults_file} not found, skipping default app setup"
        if [ ! -d "${HOME}/.local/share/applications" ]; then
            mkdir -p "${HOME}/.local/share/applications"
        fi
        echo "[Default Applications]" > "$defaults_file"
    else
        # 备份原文件
        cp -f "$defaults_file" "$backup_file"
    fi
    
    # 修改MIME类型关联，添加kylin-wine-assistant.desktop作为首选
    # 处理application/x-ms-dos-executable
    if grep -q "^application/x-ms-dos-executable=" "$defaults_file"; then
        # 检查是否已经是首选
        if grep -q "^application\/x-ms-dos-executable=$DEBNAME\.desktop;" "$defaults_file"; then
            echo "$DEBNAME.desktop is already the default handler for .exe files"
        # 检查是否是次选
        elif grep -q ";$DEBNAME\.desktop" "$defaults_file"; then
            # 调整为首选
            current_value=$(grep "^application\/x-ms-dos-executable=" "$defaults_file")
            new_value=$(echo "$current_value" | sed "s/;$DEBNAME\.desktop//")
            new_value=$(echo "$new_value" | sed "s/^application\/x-ms-dos-executable=/application\/x-ms-dos-executable=$DEBNAME.desktop;/")
            sed -i "s|^application/x-ms-dos-executable=.*|$new_value|" "$defaults_file"
        else
            # 新增为首选
            sed -i "s/^application\/x-ms-dos-executable=/application\/x-ms-dos-executable=$DEBNAME.desktop;/" "$defaults_file"
        fi
    else
        # 新增条目
        echo "application/x-ms-dos-executable=$DEBNAME.desktop;" >> "$defaults_file"
    fi

    # 处理application/x-msi
    if grep -q "^application/x-msi=" "$defaults_file"; then
        # 检查是否已经是首选
        if grep -q "^application\/x-msi=$DEBNAME\.desktop;" "$defaults_file"; then
            echo "$DEBNAME.desktop is already the default handler for .msi files"
        # 检查是否是次选
        elif grep -q ";$DEBNAME\.desktop" "$defaults_file"; then
            # 调整为首选
            current_value=$(grep "^application\/x-msi=" "$defaults_file")
            new_value=$(echo "$current_value" | sed "s/;$DEBNAME\.desktop//")
            new_value=$(echo "$new_value" | sed "s/^application\/x-msi=/application\/x-msi=$DEBNAME.desktop;/")
            sed -i "s|^application/x-msi=.*|$new_value|" "$defaults_file"
        else
            # 新增为首选
            sed -i "s/^application\/x-msi=/application\/x-msi=$DEBNAME.desktop;/" "$defaults_file"
        fi
    else
        # 新增条目
        echo "application/x-msi=$DEBNAME.desktop;" >> "$defaults_file"
    fi
    
    echo "Set wine as default handler for .exe and .msi files"
}

set_wine_default_app

update-mime-database ${HOME}/.local/share/mime || true
update-desktop-database ${HOME}/.local/share/applications || true
