#!/usr/bin/env bash # Shark-no-Shitaku bootstrap — curl target # curl -fsSL https://install.snowy-burbot.com | bash # # Downloads gum, installer.sh, verifies checksums, then hands off. set -euo pipefail INSTALL_URL="https://install.snowy-burbot.com" TEMP_DIR="$(mktemp -d)" trap 'rm -rf "$TEMP_DIR"' EXIT # ───────────────────────────────────────────── # ASCII banner (plain ANSI — gum not available yet) # ───────────────────────────────────────────── CYAN='\033[0;36m' BOLD='\033[1m' DIM='\033[2m' RESET='\033[0m' cat << 'EOF' ___ _ _ / __|| |_ __ _ _ _| |__ \__ \| ' \ / _` | '_| / / |___/|_||_|\__,_|_| |_\_\ _ _ ___ ___ _ _ _ _ | ' \/ _ \ ___ / __| |_ (_) |_ __ _| |__ _ _ |_||_\___/|___| | \__ \ ' \| | _/ _` | / /| || | |___/_||_|_|\__\__,_|_\_\ \_,_| EOF echo -e "${BOLD}${CYAN}Shark-no-Shitaku — Personal environment bootstrap${RESET}" echo -e "${DIM}install.snowy-burbot.com${RESET}" echo "" # ───────────────────────────────────────────── # Dependency check # ───────────────────────────────────────────── for dep in curl sha256sum tar; do if ! command -v "$dep" &>/dev/null; then echo "Error: required dependency '$dep' not found." >&2 exit 1 fi done # ───────────────────────────────────────────── # Architecture detection # ───────────────────────────────────────────── ARCH="$(uname -m)" case "$ARCH" in x86_64) GUM_ARCH="amd64" ;; aarch64) GUM_ARCH="arm64" ;; *) echo "Error: unsupported architecture '$ARCH'." >&2 exit 1 ;; esac echo -e "${DIM}Arch: $ARCH${RESET}" # ───────────────────────────────────────────── # Download files # ───────────────────────────────────────────── echo "Downloading installer..." curl -fsSL "$INSTALL_URL/bin/gum_${GUM_ARCH}" -o "$TEMP_DIR/gum" curl -fsSL "$INSTALL_URL/installer.sh" -o "$TEMP_DIR/installer.sh" curl -fsSL "$INSTALL_URL/checksums" -o "$TEMP_DIR/SHA256SUMS" chmod +x "$TEMP_DIR/gum" "$TEMP_DIR/installer.sh" # ───────────────────────────────────────────── # Checksum verification # ───────────────────────────────────────────── echo "Verifying checksums..." verify_checksum() { local file="$1" local name="$2" local expected expected="$(grep "$name" "$TEMP_DIR/SHA256SUMS" | awk '{print $1}')" if [[ -z "$expected" ]]; then echo "Error: no checksum found for $name in checksums file." >&2 exit 1 fi local actual actual="$(sha256sum "$file" | awk '{print $1}')" if [[ "$expected" != "$actual" ]]; then echo "Error: checksum mismatch for $name!" >&2 echo " Expected: $expected" >&2 echo " Actual: $actual" >&2 exit 1 fi } verify_checksum "$TEMP_DIR/gum" "gum_${GUM_ARCH}" verify_checksum "$TEMP_DIR/installer.sh" "installer.sh" echo -e "${CYAN}Checksums verified.${RESET}" echo "" # ───────────────────────────────────────────── # Hand off to installer # ───────────────────────────────────────────── exec "$TEMP_DIR/installer.sh" --gum="$TEMP_DIR/gum" "$@"