vibetunnel/mac/scripts/download-bun-binaries.sh
2025-06-21 16:11:34 +02:00

84 lines
No EOL
2.2 KiB
Bash
Executable file

#!/bin/bash
#
# Download pre-built Bun binaries for ARM64
# VibeTunnel only supports Apple Silicon Macs
#
set -euo pipefail
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Script directory
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAC_DIR="$SCRIPT_DIR/.."
PREBUILTS_DIR="$MAC_DIR/Resources/BunPrebuilts"
# Bun version - update this as needed
BUN_VERSION="1.1.18"
echo -e "${BLUE}Downloading Bun binaries for ARM64...${NC}"
echo "Bun version: $BUN_VERSION"
# Create directory
mkdir -p "$PREBUILTS_DIR"/arm64
# Function to download and extract Bun
download_bun() {
local arch=$1
local bun_arch=$2
local dest_dir="$PREBUILTS_DIR/$arch"
echo -e "\n${YELLOW}Downloading Bun for $arch...${NC}"
# Download URL
local url="https://github.com/oven-sh/bun/releases/download/bun-v${BUN_VERSION}/bun-darwin-${bun_arch}.zip"
local temp_zip=$(mktemp)
local temp_dir=$(mktemp -d)
# Download
echo "Downloading from: $url"
if ! curl -L -o "$temp_zip" "$url"; then
echo -e "${RED}Failed to download Bun for $arch${NC}"
rm -f "$temp_zip"
rm -rf "$temp_dir"
return 1
fi
# Extract
echo "Extracting..."
unzip -q "$temp_zip" -d "$temp_dir"
# Find the bun binary
local bun_binary=$(find "$temp_dir" -name "bun" -type f | head -1)
if [ -z "$bun_binary" ]; then
echo -e "${RED}Could not find Bun binary in download${NC}"
rm -f "$temp_zip"
rm -rf "$temp_dir"
return 1
fi
# Copy to destination as vibetunnel
cp "$bun_binary" "$dest_dir/vibetunnel"
chmod +x "$dest_dir/vibetunnel"
# Clean up
rm -f "$temp_zip"
rm -rf "$temp_dir"
echo -e "${GREEN}✓ Downloaded Bun for $arch${NC}"
return 0
}
# Download ARM64 only
download_bun "arm64" "aarch64" || echo -e "${YELLOW}Warning: Failed to download arm64 Bun${NC}"
echo -e "\n${BLUE}Note: You still need the native modules (pty.node and spawn-helper).${NC}"
echo "These must be built on Apple Silicon."
echo ""
echo "Current status:"
ls -lh "$PREBUILTS_DIR"/arm64/vibetunnel 2>/dev/null && echo " ✓ arm64 Bun binary downloaded" || echo " ✗ arm64 Bun binary missing"