#!/bin/bash # Copyright Hornet. All rights reserved. # # Installs the Hornet CLI. Served publicly from https://get.hornet.dev: # # curl -sSLf https://get.hornet.dev | bash set -euo pipefail DIST_URL=${HORNET_DIST_URL:-https://dl.cloudsmith.io/basic/hornet-dev/releases/raw} VERSION=${HORNET_VERSION:-latest} WORKDIR= TOKEN= fail() { echo install: "$@" 1>&2 exit 1 } read_token() { if [[ -n ${HORNET_ENTITLEMENT_TOKEN:-} ]]; then echo "$HORNET_ENTITLEMENT_TOKEN" return fi { : /dev/null || fail "no entitlement token given: set HORNET_ENTITLEMENT_TOKEN" local token printf 'Hornet Entitlement Token: ' >/dev/tty IFS= read -rs token /dev/tty [[ -n $token ]] || fail "the entitlement token is empty" echo "$token" } download() { local name=$1 ( umask 077 printf 'user = "token:%s"\n' "$TOKEN" >"$WORKDIR"/curlrc ) curl -sSLf --config "$WORKDIR"/curlrc -o "$WORKDIR/$name" "$DIST_URL/versions/$VERSION/$name" || fail "could not download $name: check that the entitlement token is valid" rm -f -- "$WORKDIR"/curlrc } main() { TOKEN=$(read_token) WORKDIR=$(mktemp -d) trap 'rm -rf -- "$WORKDIR"' EXIT download hornet-cli.tar.gz tar -xzf "$WORKDIR"/hornet-cli.tar.gz -C "$WORKDIR" --strip-components=1 || fail "could not unpack hornet-cli.tar.gz" local stdin=/dev/null if { : /dev/null; then stdin=/dev/tty fi HORNET_CLI_ENTITLEMENT_TOKEN=$TOKEN bash "$WORKDIR"/install.sh "$@" <"$stdin" } main "$@"