#!/usr/bin/env bash
set -eu

# This should be kept in sync with puppet/zulip/manifests/common.pp
version=2.9.1
arch="$(uname -m)"

case $arch in
    x86_64)
        tarball="tusd_linux_amd64"
        sha256=140066be543e40493abd1fda1d1e33ab7fa0e8b9a61d247130f6777e64bf28f6
        ;;

    aarch64)
        tarball="tusd_linux_arm64"
        sha256=c9c46eba6e46b8062f863af6a5423f6f72b5157939d967087cd9b6d7c6bd19cf
        ;;
esac

check_version() {
    out="$(tusd --version)" && [[ "$out" = "Version: v$version
"* ]]
}

if ! check_version 2>/dev/null; then
    set -x
    tmpdir="$(mktemp -d)"
    trap 'rm -r "$tmpdir"' EXIT
    cd "$tmpdir"
    curl_opts=(-fLO --retry 3)
    curl "${curl_opts[@]}" "https://github.com/tus/tusd/releases/download/v${version}/${tarball}.tar.gz"
    sha256sum -c <<<"${sha256} ${tarball}.tar.gz"
    tar -xzf "${tarball}.tar.gz" --no-same-owner "${tarball}/tusd"
    install -Dm755 "${tarball}/tusd" /usr/local/bin/tusd
    check_version
fi
