#!/bin/bash
set -e

echo "=========================================="
echo "Configuring yum repository..."
echo "=========================================="

if [ -f /etc/os-release ]; then
    source /etc/os-release
else
    echo "ERROR: Cannot find /etc/os-release"
    exit 1
fi

if [[ "$VERSION" =~ SP ]]; then
    SP_VERSION=$(echo "$VERSION" | grep -oP 'SP\d+')
    REPO_DIR="openEuler-${VERSION_ID}-LTS-${SP_VERSION}"
else
    REPO_DIR="openEuler-${VERSION_ID}-LTS"
fi

mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2>/dev/null || true

cat > /etc/yum.repos.d/openEuler.repo <<EOF
[openEuler-everything]
name=openEuler-${VERSION_ID} everything
baseurl=https://repo.huaweicloud.com/openeuler/${REPO_DIR}/everything/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/openeuler/${REPO_DIR}/everything/\$basearch/RPM-GPG-KEY-openEuler

[openEuler-update]
name=openEuler-${VERSION_ID} update
baseurl=https://repo.huaweicloud.com/openeuler/${REPO_DIR}/update/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/openeuler/${REPO_DIR}/update/\$basearch/RPM-GPG-KEY-openEuler

[openEuler-debuginfo]
name=openEuler-${VERSION_ID} debuginfo
baseurl=https://repo.huaweicloud.com/openeuler/${REPO_DIR}/debuginfo/\$basearch/
enabled=0
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/openeuler/${REPO_DIR}/debuginfo/\$basearch/RPM-GPG-KEY-openEuler

[openEuler-EPOL]
name=openEuler-${VERSION_ID} EPOL
baseurl=https://repo.huaweicloud.com/openeuler/${REPO_DIR}/EPOL/main/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/openeuler/${REPO_DIR}/EPOL/main/\$basearch/RPM-GPG-KEY-openEuler
EOF

yum clean all

MAX_RETRIES=3
for i in $(seq 1 $MAX_RETRIES); do
    echo ">>> yum makecache attempt $i of $MAX_RETRIES"
    if yum makecache; then
        echo "=========================================="
        echo "Yum repository configured successfully!"
        echo "=========================================="
        exit 0
    fi
    sleep 5
done

echo "WARNING: yum makecache failed after $MAX_RETRIES attempts"
echo "Repository is configured but metadata cache could not be downloaded."