#!/usr/bin/env sh # Bot Hard CLI Installer # Usage: curl -fsSL https://bot-hard.vibehard.ai | sh set -e INSTALL_DIR="/usr/local/bin" CLI_NAME="bothard" GATEWAY_URL="https://api.vibehard.ai" CLI_SOURCE="https://bot-hard.vibehard.ai/bothard_cli.js?v=1.1.0" # Colors RED='\033[0;31m' GREEN='\033[0;32m' BLUE='\033[0;34m' BOLD='\033[1m' RESET='\033[0m' echo "" echo "${BOLD}Bot Hard CLI — Installer${RESET}" echo "The autonomous developer agent for engineers who ship." echo "" # ── 1. Check for Node.js ────────────────────────────────────────────────────── if ! command -v node >/dev/null 2>&1; then echo "${RED}✗ Node.js is required but not installed.${RESET}" echo "" echo "Install it with:" echo " macOS: brew install node" echo " Linux: https://nodejs.org/en/download/package-manager" echo "" exit 1 fi NODE_VERSION=$(node --version 2>/dev/null | sed 's/v//') NODE_MAJOR=$(echo "$NODE_VERSION" | cut -d. -f1) if [ "$NODE_MAJOR" -lt 18 ]; then echo "${RED}✗ Node.js v18+ required. You have v${NODE_VERSION}.${RESET}" echo " Upgrade: https://nodejs.org" exit 1 fi echo "${GREEN}✓ Node.js v${NODE_VERSION}${RESET}" # ── 2. Download CLI ─────────────────────────────────────────────────────────── TMP_FILE=$(mktemp /tmp/bothard_cli.XXXXXX.js) echo " Downloading Bot Hard CLI..." if command -v curl >/dev/null 2>&1; then curl -fsSL "$CLI_SOURCE" -o "$TMP_FILE" elif command -v wget >/dev/null 2>&1; then wget -q "$CLI_SOURCE" -O "$TMP_FILE" else echo "${RED}✗ curl or wget required.${RESET}" exit 1 fi echo "${GREEN}✓ Downloaded${RESET}" # ── 3. Install to PATH ──────────────────────────────────────────────────────── WRAPPER="${INSTALL_DIR}/${CLI_NAME}" # Try /usr/local/bin first; fall back to ~/.local/bin if ! touch "$WRAPPER" 2>/dev/null; then INSTALL_DIR="$HOME/.local/bin" WRAPPER="${INSTALL_DIR}/${CLI_NAME}" mkdir -p "$INSTALL_DIR" fi # Write the wrapper script cat > "$WRAPPER" << WRAPPER_EOF #!/usr/bin/env sh GATEWAY_URL="${GATEWAY_URL}" node "${INSTALL_DIR}/bothard_cli.js" "\$@" WRAPPER_EOF # Copy the CLI source next to the wrapper cp "$TMP_FILE" "${INSTALL_DIR}/bothard_cli.js" chmod +x "$WRAPPER" chmod 644 "${INSTALL_DIR}/bothard_cli.js" rm -f "$TMP_FILE" echo "${GREEN}✓ Installed to ${WRAPPER}${RESET}" # ── 4. PATH check ───────────────────────────────────────────────────────────── if ! echo "$PATH" | grep -q "$INSTALL_DIR"; then echo "" echo "${BLUE}ℹ Add to your PATH:${RESET}" echo " echo 'export PATH=\"\$HOME/.local/bin:\$PATH\"' >> ~/.zshrc && source ~/.zshrc" fi # ── 5. Done ─────────────────────────────────────────────────────────────────── echo "" echo "${BOLD}${GREEN}Bot Hard is installed.${RESET}" echo "" echo "Get started:" echo " ${BOLD}bothard login${RESET} 1-Click browser sign-in with Google/GitHub" echo " ${BOLD}bothard code \"\"${RESET} Run an autonomous coding session" echo " ${BOLD}bothard auth register ${RESET} Create account via email (60k free tokens)" echo ""