Ctrl K
ComunidadGuías…

scripts/setup-bun.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bash

set -euo pipefail

BUN_VERSION="1.3.11"

case "$(uname -s):$(uname -m)" in
  "Darwin:arm64")
    asset_name="bun-darwin-aarch64.zip"
    asset_sha256="6f5a3467ed9caec4795bf78cd476507d9f870c7d57b86c945fcb338126772ffc"
    ;;
  "Darwin:x86_64")
    asset_name="bun-darwin-x64.zip"
    asset_sha256="c4fe2b9247218b0295f24e895aaec8fee62e74452679a9026b67eacbd611a286"
    ;;
  "Linux:aarch64" | "Linux:arm64")
    asset_name="bun-linux-aarch64.zip"
    asset_sha256="d13944da12a53ecc74bf6a720bd1d04c4555c038dfe422365356a7be47691fdf"
    ;;
  "Linux:x86_64")
    asset_name="bun-linux-x64.zip"
    asset_sha256="8611ba935af886f05a6f38740a15160326c15e5d5d07adef966130b4493607ed"
    ;;
  *)
    echo "Unsupported Bun platform: $(uname -s) $(uname -m)" >&2
    exit 1
    ;;
esac

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

archive_path="$tmp_dir/$asset_name"
extract_path="$tmp_dir/extract"
asset_url="https://github.com/oven-sh/bun/releases/download/bun-v${BUN_VERSION}/${asset_name}"

download_attempts=5
download_ok=0
for attempt in $(seq 1 "$download_attempts"); do
  if curl --retry 3 --retry-delay 2 --retry-all-errors -fsSL "$asset_url" -o "$archive_path"; then
    download_ok=1
    break
  fi
  echo "Bun download failed (attempt ${attempt}/${download_attempts}), retrying..." >&2
  sleep $((attempt * 2))
done

if [ "$download_ok" -ne 1 ]; then
  echo "Failed to download Bun from $asset_url after ${download_attempts} attempts" >&2
  exit 1
fi

if command -v shasum >/dev/null 2>&1; then
  echo "$asset_sha256  $archive_path" | shasum -a 256 -c -
else
  echo "$asset_sha256  $archive_path" | sha256sum -c -
fi

unzip -q "$archive_path" -d "$extract_path"

mkdir -p "$HOME/.bun/bin"
bun_binary_path="$(find "$extract_path" -type f -name bun | head -n 1)"

if [ -z "$bun_binary_path" ]; then
  echo "Bun binary not found in $asset_name" >&2
  exit 1
fi

install -m 755 "$bun_binary_path" "$HOME/.bun/bin/bun"
ln -sf "$HOME/.bun/bin/bun" "$HOME/.bun/bin/bunx"
echo "$HOME/.bun/bin" >> "$GITHUB_PATH"
export PATH="$HOME/.bun/bin:$PATH"

bun --version