#!/usr/bin/env sh
set -eu
type curl > /dev/null || { echo "curl: not found"; exit 1; }

repo='longbridge/longbridge-terminal'

get_latest_release() {
  tag=$(curl --silent "https://assets.lbkrs.com/github/release/longbridge-terminal/latest")
  if [ -z "$tag" ]; then
    echo "Failed to fetch the latest release." >&2
    return 1
  fi
  echo "$tag"
}

version=$(get_latest_release) || exit 1

echo "Latest release: $version"

bin_name='longbridge'
package_name='longbridge-terminal'


platform="$(uname | tr "[A-Z]" "[a-z]")"  # Linux => linux
arch="$(uname -m)"  # x86_64, arm64, aarch64, etc.

# Normalize architecture names
case "$arch" in
  x86_64)
    arch="amd64"
    ;;
  aarch64)
    arch="arm64"
    ;;
  arm64)
    arch="arm64"
    ;;
esac

echo "Downloading $package_name@$version ..."

# Always use the musl build on Linux – it is statically linked and works on any
# Linux system regardless of the glibc version (avoids segfaults on glibc
# systems where the binary was compiled against a different glibc version).
libc=''
if [ "$platform" = "linux" ]; then
  libc='-musl'
fi

download_url=https://assets.lbkrs.com/github/release/longbridge-terminal/$version/$package_name-$platform$libc-$arch.tar.gz
echo $download_url

tmp_dir=$(mktemp -d)
trap 'rm -rf "$tmp_dir"' EXIT

curl -Lo "$tmp_dir/$bin_name.tar.gz" $download_url
tar zxf "$tmp_dir/$bin_name.tar.gz" -C "$tmp_dir"

if test $(id -u) -eq 0; then
  mv "$tmp_dir/$bin_name" /usr/local/bin/$bin_name
else
  sudo mv "$tmp_dir/$bin_name" /usr/local/bin/$bin_name
fi
echo "Longbridge CLI $version has installed successfully."
echo ""
echo "You can use \`longbridge -h\` to get help."
echo ""
