#!/bin/bash

# Exit on any error
set -e

cd $1

# Source the PKGBUILD in a subshell to avoid polluting the global environment
(
    source ./PKGBUILD

    # Convert pkgname to array in case it's a single string
    pkgnames=("${pkgname[@]}")

    for pkg in "${pkgnames[@]}"; do
        echo "Checking package: $pkg"

        if pacman -Si "$pkg" &>/dev/null; then
            echo "Package '$pkg' exists in a repository."

            # Get the package build date
            pkg_build_date=$(date -d "$(pacman -Si "$pkg" | grep 'Build Date' | cut -d: -f2-)" +%s)

            all_deps=("${depends[@]}" "${makedepends[@]}" "${optdepends[@]}")

            # Check each dependency
            for dep in "${all_deps[@]}"; do
                dep_name=$(echo "$dep" | sed 's/[<>=].*//')  # Remove version constraints
                echo "Querying dependency: $dep_name"

                if pacman -Si "$dep_name" &>/dev/null; then
                    dep_build_date=$(date -d "$(pacman -Si "$dep_name" | grep 'Build Date' | cut -d: -f2-)" +%s)
                    if (( dep_build_date >= pkg_build_date )); then
                        echo "Dependency '$dep_name' has newer or equal build date than '$pkg'."
                        echo "OUT-OF-DATE"
                        exit 0
                    fi
                else
                    echo "Dependency '$dep_name' not found in repositories. Skipping."
                fi
            done

            echo "All dependencies are older than package '$pkg'."
            echo "UP-TO-DATE"
            exit 0
        else
            echo "Package '$pkg' does NOT exist in any repository."
            echo "OUT-OF-DATE"
            exit 0
        fi
    done
)