#!/usr/bin/env bash
set -euo pipefail

version=1.22.19
sha256=732620bac8b1690d507274f025f3c6cfdc3627a84d9642e38a07452cc00e0f2e
tarball="yarn-$version.tgz"

check_version() {
    # Reading the version of Yarn from its package.json is much faster
    # than running yarn --version.
    link="$(command -v yarn)" \
        && [ "$link" -ef /srv/zulip-yarn/bin/yarn ] \
        && current_version="$(jq -r '.version' /srv/zulip-yarn/package.json)" \
        && [ "$current_version" = "$version" ]
}

if ! check_version; then
    tmpdir="$(mktemp -d)"
    trap 'rm -r "$tmpdir"' EXIT
    cd "$tmpdir"
    curl -fLO --retry 3 "https://registry.npmjs.org/yarn/-/$tarball"
    sha256sum -c <<<"$sha256 $tarball"
    rm -rf /srv/zulip-yarn
    mkdir /srv/zulip-yarn
    tar -xzf "$tarball" --no-same-owner --strip-components=1 -C /srv/zulip-yarn
    ln -nsf /srv/zulip-yarn/bin/yarn /usr/bin/yarn
    check_version
fi
