#!/usr/bin/env bash

set -uexo pipefail

script_home="$(cd "$(dirname "$0")" && pwd)"

default=0.0.0

cmdname="$(basename "$0")"

usage() { echo "Usage: $cmdname VERSION INSTALLDIR_IF_NEEDED"; }

misuse() { usage 1>&2; exit 2; }

declare -A known_hash
known_hash[0.0.0]=b5840a59f5437677e22a33dd27b27282c5186d1ecd89b23d8d2ef4c62d3511ce

test "$#" -eq 2 || misuse

ver="$1"
if test "$ver" = default; then
    ver="$default"
fi

install="$2"
hash="${known_hash[$ver]}"

if ! test "$hash"; then
    echo "$cmdname: don't know sha256sum for $ver" 1>&2
    exit 2
fi

if command -v pgbox; then
    curver="$(pgbox version | cut -d' ' -f2)"
    if test "$curver" = "$ver"; then
        exit 0
    fi
fi

tmpdir="$(mktemp -d "$cmdname-XXXXXX")"
tmpdir="$(cd "$tmpdir" && pwd)"
trap "$(printf 'rm -rf %q' "$tmpdir")" EXIT

cd "$tmpdir"
curl -O "https://gitlab.com/pgbox-org/pgbox/raw/8ba9c69e061c89ef6f06cb40f5d60e85c1e2e336/pgbox"
obshash="$("$script_home/sha256sum" < pgbox | cut -d' ' -f1)"
cd ..

if test "$obshash" != "$hash"; then
    echo "$cmdname: sha256sum $obshash != $hash" 1>&2
    exit 2
fi

mkdir -p "$install/bin"
mv -i "$tmpdir/pgbox" "$install/bin"
chmod +x "$install/bin/pgbox"
