#!/usr/bin/env bash set -euo pipefail version=1.22.17 sha256=267982c61119a055ba2b23d9cf90b02d3d16c202c03cb0c3a53b9633eae37249 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)" \ && bin="$(readlink -f "$link")" \ && [ "$bin" = /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 "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