#!/bin/bash
set -e

KEY_URL="https://dl.404world.in/keys/84d251440b36a3cc"
KEY_FILE="/tmp/84d251440b36a3cc"
FEED_CONF="/etc/opkg/customfeeds.conf"

# 下载GPG密钥
download_key() {
    echo "Downloading key..."
    curl -fsSL -o "$KEY_FILE" "$KEY_URL" || { echo "Failed to download key"; exit 1; }
}

# 添加GPG密钥
add_key() {
    echo "Adding key..."
    opkg-key add "$KEY_FILE" || { echo "Failed to add key"; exit 1; }
}

# 删除旧的软件源
remove_old_feed() {
    local old_feed="src/gz myan https://dl.404world.in/opkg/x86_64"
    if grep -Fxq "$old_feed" "$FEED_CONF"; then
        echo "Old feeds found. Removing it..."
        sed -i "\|$old_feed|d" "$FEED_CONF" || { echo "Failed to remove old feed"; exit 1; }
        echo "Old feeds removed successfully."
    else
        echo "Old feeds not found. No action needed."
    fi
}

# 检查新软件源是否已存在
check_new_feed_existence() {
    local new_feed="src/gz myan https://dl.404world.in/opkg/x86/64"
    if grep -Fxq "$new_feed" "$FEED_CONF"; then
        echo "New feed already exists. Skipping..."
        exit 0
    fi
}

# 添加新的软件源（确保在新的一行添加）
add_feed_entry() {
    echo "Adding new feed entry..."
    # 确保文件末尾有一个换行符
    if [ -n "$(tail -c 1 "$FEED_CONF")" ]; then
        echo "" >> "$FEED_CONF"
    fi
    # 添加新源
    echo "$FEED_ENTRY" >> "$FEED_CONF"
    echo "New feed added successfully."
}

# 设置软件源条目
set_feed_entry() {
    local ARCH=$(uname -m)

    case "$ARCH" in
        x86_64)
            FEED_ENTRY="src/gz myan https://dl.404world.in/opkg/x86/64"
            ;;
        aarch64)
            FEED_ENTRY="src/gz myan https://dl.404world.in/opkg/aarch64_generic"
            ;;
        *)
            echo "Unsupported architecture: $ARCH"
            exit 1
            ;;
    esac
}

# 主流程
set_feed_entry
remove_old_feed
check_new_feed_existence
download_key
add_key
add_feed_entry

echo "All done!"
