# -*- mode: shell-script -*-
# Shell functions for downloading and extracting a RHEL or RHEL clone RPM

# Arguments:
# $1: Linux distribution name
# $2: Linux distribution version (major.minor)
# $3: architecture
function get_srpm_urls() {
    local arch distro releasever releasevermajor releaseverminor

    distro="$1"
    releasever="$2"
    arch="$3"
    set -- ${2//./ }
    releasevermajor="$1"
    releaseverminor="$2"

    case "$distro" in
	"CentOS"*)
	    case $releasever in
		7*)
		    echo "http://vault.centos.org/${releasever}/os/Source/SPackages"
		    echo "http://vault.centos.org/${releasever}/updates/Source/SPackages";;
		8*)
		    echo "http://vault.centos.org/${releasever}/BaseOS/Source/SPackages/";;
	    esac
	    ;;
	"AlmaLinux")
	    case $releasever in
	        [89]*|10*)
		    echo "https://repo.almalinux.org/vault/${releasever}/BaseOS/Source/Packages/";;
	    esac
	    ;;
	"RockyLinux"|"Rocky")
	    case $releasever in
	        [89]*|10*)
		    echo "https://dl.rockylinux.org/pub/rocky/${releasever}/BaseOS/source/tree/Packages/k/"
		    echo "https://dl.rockylinux.org/pub/rocky/${releasever}/BaseOS/source/tree/Packages/"
		    echo "https://dl.rockylinux.org/vault/rocky/${releasever}/BaseOS/source/tree/Packages/k/"
		    echo "https://dl.rockylinux.org/vault/rocky/${releasever}/BaseOS/source/tree/Packages/";;
	    esac
	    ;;
	"Oracle Linux Server"|"UEK")
	    echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/${releaseverminor}/base/${arch}/getPackageSource"
	    echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/latest/${arch}/getPackageSource"
	    for ((i=4;i<=8;i++)); do
		echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/UEKR$i/${arch}/getPackageSource"
	    done
	    ;;
	*)
	    echo "Unknown type of distribution: $distro" >&2
	    return 1
	    ;;
    esac
}

# Arguments:
# $1: Linux distribution name
# $2: Linux distribution version (major.minor)
# $3: architecture
function get_rpm_urls() {
    local arch distro releasever releasevermajor releaseverminor

    distro="$1"
    releasever="$2"
    arch="$3"
    set -- ${2//./ }
    releasevermajor="$1"
    releaseverminor="$2"

    case "$distro" in
	"CentOS"*)
	    case $releasever in
		7*)
		    echo "https://mirrors.edge.kernel.org/centos/${releasever}/updates/${arch}/Packages"
		    echo "http://vault.centos.org/${releasever}/updates/${arch}/Packages"
		    echo "http://vault.centos.org/${releasever}/os/${arch}/Packages http://vault.centos.org/${releasever}/updates/${arch}/Packages";;
		8*)
		    echo "https://mirrors.edge.kernel.org/centos/8-stream/BaseOS/${arch}/os/Packages";;
	    esac
	    ;;
	"AlmaLinux")
	    case $releasever in
	        [89]*|10*)
		    echo "https://mirror.yandex.ru/almalinux/${releasever}/BaseOS/${arch}/os/Packages/";;
	    esac
	    ;;
	"RockyLinux"|"Rocky")
	    case $releasever in
	        [89]*|10*)
		    echo "https://dl.rockylinux.org/pub/rocky/${releasever}/BaseOS/${arch}/os/Packages/k/"
		    echo "https://dl.rockylinux.org/pub/rocky/${releasever}/BaseOS/${arch}/os/Packages/"
		    echo "https://dl.rockylinux.org/vault/rocky/${releasever}/BaseOS/${arch}/os/Packages/k/"
		    echo "https://dl.rockylinux.org/vault/rocky/${releasever}/BaseOS/${arch}/os/Packages/";;
	    esac
	    ;;
	"Oracle Linux Server"|"UEK")
	    echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/${releaseverminor}/base/${arch}/getPackageSource"
	    echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/latest/${arch}/getPackageSource"
	    for ((i=4;i<=8;i++)); do
		echo "http://public-yum.oracle.com/repo/OracleLinux/OL${releasevermajor}/UEKR$i/${arch}/getPackageSource"
	    done
	    ;;
	*)
	    echo "Unknown distribution type: $distro" >&2
	    return 1
	    ;;
    esac
}
