#!/bin/bash set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' BLUE='\033[0;36m' YELLOW='\033[0;33m' NC='\033[0m' # Temporary directory for downloads TMP_DIR=$(mktemp -d) trap 'rm -rf "$TMP_DIR"' EXIT # Check for required commands check_requirements() { if ! command -v curl >/dev/null 2>&1; then echo -e "${RED}Error: curl is required${NC}" exit 1 fi } # Detect system information detect_system() { local os arch suffix case "$(uname -s)" in Linux*) os="linux";; Darwin*) os="darwin";; *) echo -e "${RED}Unsupported OS${NC}"; exit 1;; esac case "$(uname -m)" in x86_64) arch="x64" [ "$os" = "darwin" ] && suffix="_intel" ;; aarch64|arm64) arch="arm64" [ "$os" = "darwin" ] && suffix="_apple_silicon" ;; i386|i686) arch="x86" [ "$os" = "darwin" ] && { echo -e "${RED}32-bit not supported on macOS${NC}"; exit 1; } ;; *) echo -e "${RED}Unsupported architecture${NC}"; exit 1;; esac echo "$os $arch $suffix" } # Download with progress download() { local url="$1" local output="$2" curl -#L "$url" -o "$output" } # Check and create installation directory setup_install_dir() { local install_dir="$1" if [ ! -d "$install_dir" ]; then mkdir -p "$install_dir" || { echo -e "${RED}Failed to create installation directory${NC}" exit 1 } fi } # Main installation function main() { check_requirements echo -e "${BLUE}Starting installation...${NC}" # Detect system read -r OS ARCH SUFFIX <<< "$(detect_system)" echo -e "${GREEN}Detected: $OS $ARCH${NC}" # Set installation directory INSTALL_DIR="/usr/local/bin" # Setup installation directory setup_install_dir "$INSTALL_DIR" # Get latest release info echo -e "${BLUE}Fetching latest release information...${NC}" LATEST_URL="https://api.github.com/repos/dacrab/go-cursor-help/releases/latest" # Construct binary name BINARY_NAME="cursor-id-modifier_${OS}_${ARCH}${SUFFIX}" echo -e "${BLUE}Looking for asset: $BINARY_NAME${NC}" # Get download URL directly DOWNLOAD_URL=$(curl -s "$LATEST_URL" | tr -d '\n' | grep -o "\"browser_download_url\": \"[^\"]*${BINARY_NAME}[^\"]*\"" | cut -d'"' -f4) if [ -z "$DOWNLOAD_URL" ]; then echo -e "${RED}Error: Could not find appropriate binary for $OS $ARCH${NC}" exit 1 fi echo -e "${GREEN}Found matching asset: $BINARY_NAME${NC}" echo -e "${BLUE}Downloading from: $DOWNLOAD_URL${NC}" download "$DOWNLOAD_URL" "$TMP_DIR/cursor-id-modifier" # Install binary echo -e "${BLUE}Installing...${NC}" chmod +x "$TMP_DIR/cursor-id-modifier" sudo mv "$TMP_DIR/cursor-id-modifier" "$INSTALL_DIR/" echo -e "${GREEN}Installation completed successfully!${NC}" echo -e "${BLUE}Running cursor-id-modifier...${NC}" # Run the program with sudo, preserving environment variables export AUTOMATED_MODE=1 if ! sudo -E cursor-id-modifier; then echo -e "${RED}Failed to run cursor-id-modifier${NC}" exit 1 fi } main