### Fedora Workstation downloader
### Example of how to use: ./fedora.sh 44 44-1.7
### Version 44, sub version 44-1.7

#!/usr/bin/env bash

set -e

if [[ $# -ne 2 ]]; then
    echo "Usage: $0 <Fedora release> <image version>"
    echo
    echo "Example:"
    echo "  $0 44 44-1.7"
    echo "  $0 43 43-1.2"
    exit 1
fi

FEDORA_RELEASE="$1"
IMAGE_VERSION="$2"

FILENAME="Fedora-Workstation-Live-${IMAGE_VERSION}.x86_64.iso"

FEDORA_BASE="https://download.fedoraproject.org/pub/fedora/linux/releases"
WATERLOO_BASE="https://mirror.csclub.uwaterloo.ca/fedora/linux/releases"

echo "Fedora Workstation downloader"
echo
echo "Release:       Fedora ${FEDORA_RELEASE}"
echo "Image version: ${IMAGE_VERSION}"
echo "Filename:      ${FILENAME}"
echo

echo "Select download source:"
echo "1) Fedora official"
echo "2) University of Waterloo"

read -rp "Choice [1-2]: " choice

case "$choice" in
    1)
        BASE_URL="$FEDORA_BASE"
        SOURCE_NAME="Fedora official"
        ;;
    2)
        BASE_URL="$WATERLOO_BASE"
        SOURCE_NAME="University of Waterloo"
        ;;
    *)
        echo "Invalid choice."
        exit 1
        ;;
esac

URL="${BASE_URL}/${FEDORA_RELEASE}/Workstation/x86_64/iso/${FILENAME}"

echo
echo "Source: ${SOURCE_NAME}"
echo "URL:"
echo "$URL"
echo

if command -v curl >/dev/null 2>&1; then
    echo "Downloading with curl..."
    curl -fL --progress-bar -C - -o "$FILENAME" "$URL"

elif command -v wget >/dev/null 2>&1; then
    echo "Downloading with wget..."
    wget -c -O "$FILENAME" "$URL"

else
    echo "Error: curl or wget is required."
    exit 1
fi

echo
echo "Download complete:"
echo "$(pwd)/${FILENAME}"
