#! /usr/bin/env nix-shell
#! nix-shell -i bash -p nix nix-prefetch-git gnutar curl jq unzip

set -euo pipefail

cd "$(dirname "$(readlink -f "$0")")"

log() {
    tput bold
    echo "#" "$@"
    tput sgr0
}

oldVersion="$(nix --experimental-features nix-command eval -f sources.nix --raw version)"
newVersion="$(curl "https://api.github.com/repos/pineappleEA/pineapple-src/releases?per_page=1" | jq -r '.[0].tag_name' | cut -d"-" -f2)"

if [ "$oldVersion" == "$newVersion" ]; then
    log "Already up to date"
    exit 0
fi

fetched="$(nix-prefetch-url --unpack --print-path "https://github.com/pineappleEA/pineapple-src/releases/download/EA-${newVersion}/Windows-Yuzu-EA-${newVersion}.zip")"

eaDistHash="$(echo "${fetched}" | head -n1)"
eaDist="$(echo "${fetched}" | tail -n1)"

eaDistUnpacked="$(mktemp -d)"
trap 'rm -rf "$eaDistUnpacked"' EXIT

log "Unpacking dist..."
tar xf "$eaDist"/*.tar.xz --directory="$eaDistUnpacked" --strip-components=1

log "Rehydrating..."
eaFullHash="$(nix-prefetch-git --fetch-submodules "$eaDistUnpacked" | jq -r '.sha256')"

cat >sources.nix <<EOF
# Generated by ./update.sh - do not update manually!
# Last updated: $(date +%F)
{
  version = "$newVersion";
  distHash = "sha256:$eaDistHash";
  fullHash = "sha256:$eaFullHash";
}
EOF

if [ "${COMMIT:-0}" == "1" ]; then
    git commit -m "yuzu-ea: ${oldVersion} -> ${newVersion}" ./sources.nix
fi
