#!/bin/sh
set -o errexit
set -o nounset

if [ "$#" != '1' ]
then
	cat 1>&2 <<EOF
Usage: $0 VERSION

Downloads the requested version and creates a filtered source tarball.
EOF
	exit 1
fi

VERSION="${1}"
OUTDIR="${PWD}"
TMPDIR="$(mktemp -d)"
trap "rm -rf '${TMPDIR}'" INT TERM EXIT

cd "${TMPDIR}"
FORGEURL='https://github.com/scipopt/PySCIPOpt'
URL="${FORGEURL}/archive/v${VERSION}/PySCIPOpt-${VERSION}.tar.gz"
echo "--> Downloading: ${URL}" 1>&2
curl -L -O "${URL}"

ARCHIVE="$(find . -mindepth 1 -maxdepth 1 -type f -name '*.tar.gz' -print -quit)"
echo "--> Extracting: $(basename "${ARCHIVE}")" 1>&2
tar -xzf "${ARCHIVE}"
echo '--> Removing tutorial scripts licensed WTFNMFPL' 1>&2
TARDIR="$(basename "${ARCHIVE}" '.tar.gz')"
rm -v "${TARDIR}/examples/tutorial/even.py"
rm -v "${TARDIR}/examples/tutorial/logical.py"
FILTERED="$(basename "${ARCHIVE}" .tar.gz)-filtered.tar.gz"
echo '--> Confirming WTFNMFPL is not mentioned elsewhere' 1>&2
if grep -FrnI 'WTFNMFPL' "${TARDIR}"
then
	echo 'Failed to remove all traces of WTFNMFPL' 1>&2
	exit 1
fi
echo "--> Re-archiving: ${FILTERED}" 1>&2
# https://www.gnu.org/software/tar/manual/html_section/Reproducibility.html
TZ=UTC LC_ALL=C tar \
    --create --verbose \
    --sort=name \
    --format=posix \
    --numeric-owner --owner=0 --group=0 \
    --mode=go+u,go-w \
    --pax-option='delete=atime,delete=ctime' \
    "${TARDIR}/" |
  gzip -9 > "${FILTERED}"
mv -v "${FILTERED}" "${OUTDIR}"
echo 'Done.' 1>&2
