#!/bin/bash # OpenQode Auto-Installer for macOS / Linux # Noob-proof: Auto-installs Node.js and Git if missing! set -e # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' # No Color echo "" echo -e "${CYAN} ╔═══════════════════════════════════════════╗${NC}" echo -e "${CYAN} ║ 🚀 OpenQode Auto-Installer 🚀 ║${NC}" echo -e "${CYAN} ║ Next-Gen AI Coding Assistant ║${NC}" echo -e "${CYAN} ╚═══════════════════════════════════════════╝${NC}" echo "" # Detect OS detect_os() { if [[ "$OSTYPE" == "darwin"* ]]; then echo "macos" elif [[ -f /etc/debian_version ]]; then echo "debian" elif [[ -f /etc/redhat-release ]]; then echo "redhat" elif [[ -f /etc/arch-release ]]; then echo "arch" else echo "linux" fi } OS=$(detect_os) echo -e "${CYAN}[*] Detected OS: $OS${NC}" # Install Git if missing install_git() { echo -e "${YELLOW}[!] Git not found. Installing...${NC}" case $OS in macos) if command -v brew &> /dev/null; then brew install git else echo -e "${YELLOW}[!] Installing Homebrew first...${NC}" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install git fi ;; debian) sudo apt-get update sudo apt-get install -y git ;; redhat) sudo yum install -y git || sudo dnf install -y git ;; arch) sudo pacman -S --noconfirm git ;; *) echo -e "${RED}[X] Please install Git manually for your distribution${NC}" exit 1 ;; esac } # Install Node.js if missing install_node() { echo -e "${YELLOW}[!] Node.js not found. Installing...${NC}" case $OS in macos) if command -v brew &> /dev/null; then brew install node else echo -e "${YELLOW}[!] Installing via nvm...${NC}" curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" nvm install --lts fi ;; debian) # Using NodeSource curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs ;; redhat) curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - sudo yum install -y nodejs || sudo dnf install -y nodejs ;; arch) sudo pacman -S --noconfirm nodejs npm ;; *) echo -e "${YELLOW}[!] Installing via nvm (universal)...${NC}" curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" nvm install --lts ;; esac } # Step 1: Check Git echo -e "${CYAN}[1/4] Checking for Git...${NC}" if ! command -v git &> /dev/null; then install_git fi if ! command -v git &> /dev/null; then echo -e "${RED}[X] Git installation failed. Please install manually.${NC}" exit 1 fi echo -e "${GREEN}[✓] Git is installed!${NC}" # Step 2: Check Node.js echo -e "${CYAN}[2/4] Checking for Node.js...${NC}" if ! command -v node &> /dev/null; then install_node # Reload PATH for nvm export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" fi if ! command -v node &> /dev/null; then echo -e "${RED}[X] Node.js installation failed. Please install manually: https://nodejs.org/${NC}" exit 1 fi NODE_VER=$(node --version) echo -e "${GREEN}[✓] Node.js $NODE_VER is installed!${NC}" # Step 3: Clone or update repository TARGET_DIR="OpenQode" REPO_URL="https://github.com/roman-ryzenadvanced/OpenQode-Public-Alpha.git" echo -e "${CYAN}[3/4] Setting up OpenQode...${NC}" if [ -d "$TARGET_DIR" ]; then echo -e "${YELLOW}[*] Directory exists. Updating...${NC}" cd "$TARGET_DIR" git pull --ff-only || true cd .. else echo -e "${YELLOW}[*] Cloning repository...${NC}" git clone "$REPO_URL" "$TARGET_DIR" fi # Step 4: Install dependencies (clean install to ensure React overrides work) cd "$TARGET_DIR" echo -e "${CYAN}[4/4] Installing dependencies...${NC}" # Clean existing node_modules to ensure React overrides take effect if [ -d "node_modules" ]; then echo -e "${YELLOW}[*] Cleaning existing dependencies for fresh install...${NC}" rm -rf node_modules package-lock.json fi npm install --legacy-peer-deps if [ $? -ne 0 ]; then echo -e "${YELLOW}[!] Retrying npm install...${NC}" npm cache clean --force npm install --legacy-peer-deps fi echo "" echo -e "${GREEN} ╔═══════════════════════════════════════════╗${NC}" echo -e "${GREEN} ║ ✅ Installation Complete! ✅ ║${NC}" echo -e "${GREEN} ║ ║${NC}" echo -e "${GREEN} ║ Launching OpenQode Next-Gen TUI... ║${NC}" echo -e "${GREEN} ╚═══════════════════════════════════════════╝${NC}" echo "" # Make executable and launch chmod +x OpenQode.sh ./OpenQode.sh