#!/bin/sh
set -eu

# Assets are published to get.harnessarena.xyz (S3 + CloudFront; see
# .github/workflows/cli-release.yml). `cli/latest` always serves the newest
# STABLE release; pin a version with HA_RELEASES=https://get.harnessarena.xyz/cli/vX.Y.Z .
RELEASES="${HA_RELEASES:-https://get.harnessarena.xyz/cli/latest}"
OS="${HA_INSTALL_OS:-$(uname -s | tr '[:upper:]' '[:lower:]')}"
ARCH="${HA_INSTALL_ARCH:-$(uname -m)}"

case "$ARCH" in
  arm64|aarch64) ARCH=arm64 ;;
  x86_64|amd64)  ARCH=x64 ;;
  *) echo "unsupported arch: $ARCH" >&2; exit 1 ;;
esac
case "$OS" in
  darwin|linux) ;;
  *) echo "unsupported os: $OS" >&2; exit 1 ;;
esac

ASSET="ha-${OS}-${ARCH}"
DEST="${HOME}/.local/bin/ha"

if [ "${HA_INSTALL_DRYRUN:-0}" = "1" ]; then
  echo "asset: ${ASSET}"
  echo "install to: ${DEST}"
  echo "releases: ${RELEASES}"
  exit 0
fi

mkdir -p "$(dirname "$DEST")"
echo "downloading ${RELEASES}/${ASSET}"
curl -fsSL "${RELEASES}/${ASSET}" -o "$DEST"
curl -fsSL "${RELEASES}/${ASSET}.sha256" -o "${DEST}.sha256"
# verify (sha256sum on linux, shasum on darwin)
if command -v sha256sum >/dev/null 2>&1; then
  ( cd "$(dirname "$DEST")" && echo "$(cat "${DEST}.sha256")  ha" | sha256sum -c - )
else
  ( cd "$(dirname "$DEST")" && echo "$(cat "${DEST}.sha256")  ha" | shasum -a 256 -c - )
fi
rm -f "${DEST}.sha256"
chmod +x "$DEST"

case ":$PATH:" in
  *":$(dirname "$DEST"):"*) ;;
  *) echo "add to PATH: export PATH=\"$(dirname "$DEST"):\$PATH\"" ;;
esac

# Skill install + consent prompt live in the binary (tested in TS):
"$DEST" _post-install || true

echo "installed. next: ha login && ha clone"
