#!/usr/bin/env bash

set -euo pipefail

# shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"

APP=bun
VERSION=${VERSION:-1.4.3}
DEST=${XDG_DATA_HOME}/apps/releases/${APP}

main() (
	URL=https://github.com/oven-sh/bun/releases/download/bun-v${VERSION}/bun-$(get_os)-$(get_arch).zip

	# the archive wraps everything in a bun-<os>-<arch>/ dir; -j drops it
	extract_zip "${URL}" "${DEST}/${VERSION}" "-j"
	set_current_link "${DEST}" "${VERSION}"
	set_link "${XDG_BIN_HOME}/${APP}" "${DEST}" "${APP}"
	set_link "${XDG_BIN_HOME}/bunx" "${DEST}" "${APP}"
)

get_arch() (
	case $(uname -m) in
	x86_64*) echo x64 ;;
	arm64*) echo aarch64 ;;
	aarch64*) echo aarch64 ;;
	*)
		echo >&2 "unsupported architecture: $(uname -m)"
		exit 1
		;;
	esac
)

get_os() (
	case $(uname -s) in
	Linux*) echo linux ;;
	Darwin*) echo darwin ;;
	*)
		echo >&2 "unsupported os: $(uname -s)"
		exit 1
		;;
	esac
)

main "${@}"
