#!/usr/bin/env bash
# Change the version numbers in the toolvers file and then run this 
# script to update the hashes

ARCHIVES=archives
GNU_MIRROR=https://mirrors.kernel.org/gnu
TOOLVERS_FILE="toolvers"
. "$TOOLVERS_FILE"

function verify_sig() {
  SIGFILE="$1"
  ARCHIVE="$2"

  if ! gpg -q --verify "$SIGFILE" "$ARCHIVE"; then
    echo "Failed to verify $ARCHIVE, aborting"
    exit 1
  fi
}

function fetch_and_verify() {
  PKG_URI_DIR="$1"
  FILENAME="$2"

  if [ ! -f "$ARCHIVES/$FILENAME" ]; then
    wget -P "$ARCHIVES" -N "$PKG_URI_DIR/$FILENAME"
  fi
  if [ ! -f "$ARCHIVES/$FILENAME.sig" ]; then
    wget -P "$ARCHIVES" -N "$PKG_URI_DIR/$FILENAME.sig"
  fi

  verify_sig "$ARCHIVES/$FILENAME.sig" "$ARCHIVES/$FILENAME"
}


fetch_and_verify "$GNU_MIRROR/binutils/" "binutils-$BINUTILS_VER.tar.bz2"
fetch_and_verify "$GNU_MIRROR/gcc/gcc-$GCC_VER/" "gcc-$GCC_VER.tar.bz2"
fetch_and_verify "$GNU_MIRROR/gdb/" "gdb-$GDB_VER.tar.xz"
fetch_and_verify "$GNU_MIRROR/mpfr/" "mpfr-$MPFR_VER.tar.bz2"
fetch_and_verify "$GNU_MIRROR/mpc/" "mpc-$MPC_VER.tar.gz"
fetch_and_verify "$GNU_MIRROR/gmp/" "gmp-$GMP_VER.tar.bz2"

BINUTILS_HASH=$(shasum -a 256 -b "$ARCHIVES/binutils-$BINUTILS_VER.tar.bz2" | cut -f1 -d' ')
GCC_HASH=$(shasum -a 256 -b "$ARCHIVES/gcc-$GCC_VER.tar.bz2" | cut -f1 -d' ')
GDB_HASH=$(shasum -a 256 -b "$ARCHIVES/gdb-$GDB_VER.tar.xz" | cut -f1 -d' ')
MPFR_HASH=$(shasum -a 256 -b "$ARCHIVES/mpfr-$MPFR_VER.tar.bz2" | cut -f1 -d' ')
MPC_HASH=$(shasum -a 256 -b "$ARCHIVES/mpc-$MPC_VER.tar.gz" | cut -f1 -d' ')
GMP_HASH=$(shasum -a 256 -b "$ARCHIVES/gmp-$GMP_VER.tar.bz2" | cut -f1 -d' ')

tmp=$(mktemp)
echo "# Rerun updatetoolvers after modifying this file" > "$tmp"
echo "GCC_VER=$GCC_VER" >> "$tmp"
echo "BINUTILS_VER=$BINUTILS_VER" >> "$tmp"
echo "GDB_VER=$GDB_VER" >> "$tmp"
echo "GMP_VER=$GMP_VER" >> "$tmp"
echo "MPC_VER=$MPC_VER" >> "$tmp"
echo "MPFR_VER=$MPFR_VER" >> "$tmp"

echo "# Below is autogenerated by updatetoolvers" >> "$tmp"
echo "GCC_HASH=$GCC_HASH" >> "$tmp"
echo "BINUTILS_HASH=$BINUTILS_HASH" >> "$tmp"
echo "GDB_HASH=$GDB_HASH" >> "$tmp"
echo "GMP_HASH=$GMP_HASH" >> "$tmp"
echo "MPC_HASH=$MPC_HASH" >> "$tmp"
echo "MPFR_HASH=$MPFR_HASH" >> "$tmp"
mv "$tmp" "$TOOLVERS_FILE"
