#!/usr/bin/env bash


# Check if type argument is provided
if [ $# -eq 0 ]; then
    echo "Error: Type argument is required"
    echo "Usage: $0 <dis|hw> [max_number]"
    echo "Examples:"
    echo "  $0 dis 15"
    echo "  $0 hw 10"
    exit 1
fi

# Parse arguments
TYPE=$1
MAX_NUM=${2:-11}

# Validate type parameter
if [[ "$TYPE" != "dis" && "$TYPE" != "hw" ]]; then
    echo "Error: Type must be 'dis' or 'hw'"
    echo "Usage: $0 <dis|hw> [max_number]"
    exit 1
fi

# Create download directory
DOWNLOAD_DIR="cs170_${TYPE}"
mkdir -p "$DOWNLOAD_DIR"
cd "$DOWNLOAD_DIR"

echo "Starting download of CS170 ${TYPE^^} files (1-$MAX_NUM)..."
echo "Download directory: $DOWNLOAD_DIR"
echo "----------------------------------------"

DOWNLOADED=0
FAILED=0

# Download files and solutions
for i in $(seq 1 $MAX_NUM); do
    # Format number as two digits (01, 02, ...)
    num=$(printf "%02d" $i)

    # Download main file
    file_url="https://cs170.org/assets/pdf/${TYPE}${num}.pdf"
    echo -n "Downloading ${TYPE}${num}.pdf ... "
    if wget -q "$file_url" 2>/dev/null; then
        echo ""
        ((DOWNLOADED++))
    else
        echo "✗ (not found)"
        ((FAILED++))
    fi

    # Download solution file
    sol_url="https://cs170.org/assets/pdf/${TYPE}${num}-sol.pdf"
    echo -n "Downloading ${TYPE}${num}-sol.pdf ... "
    if wget -q "$sol_url" 2>/dev/null; then
        echo ""
        ((DOWNLOADED++))
    else
        echo "✗ (not found)"
        ((FAILED++))
    fi
done

echo "----------------------------------------"
echo "Download complete!"
echo "Success: $DOWNLOADED files"
echo "Failed/Not found: $FAILED files"
echo "Files saved in: $(pwd)"