claude-code-termux/install.sh

113 lines
3.0 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
#
# install.sh: Set up Claude Code on Termux
#
# Usage: bash install.sh [--dry-run]
#
set -e
RED="\033[0;31m"
GREEN="\033[0;32m"
YELLOW="\033[1;33m"
CYAN="\033[0;36m"
NC="\033[0m"
DRY_RUN=false
[[ "$1" == "--dry-run" ]] && DRY_RUN=true
CLAUDE_VERSION="2.1.112"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
BIN_DIR="$HOME/.local/bin"
step() { echo -e "\n${CYAN}[$1/$TOTAL] $2${NC}"; }
run() {
if $DRY_RUN; then
echo -e " ${YELLOW}[dry-run]${NC} $*"
else
"$@"
fi
}
# Verify we're on Termux
if [[ -z "$PREFIX" || ! -d "$PREFIX" ]]; then
echo -e "${RED}Error: Not running on Termux${NC}"
echo "This installer is designed for Termux on Android."
exit 1
fi
TOTAL=8
echo -e "${GREEN}=== Claude Code for Termux - Installer ===${NC}"
echo "Version ceiling: v$CLAUDE_VERSION"
$DRY_RUN && echo -e "${YELLOW}(dry-run mode - no changes will be made)${NC}"
# 1. Install system packages
step 1 "Installing system packages..."
run pkg install -y nodejs python git proot
# 2. Install Claude Code
step 2 "Installing Claude Code v$CLAUDE_VERSION..."
run npm install -g "@anthropic-ai/claude-code@$CLAUDE_VERSION"
# 3. Protect against auto-updater
step 3 "Protecting against auto-updater..."
CLAUDE_DIR="$PREFIX/lib/node_modules/@anthropic-ai/claude-code"
if [[ -d "$CLAUDE_DIR" ]]; then
run chmod -R a-w "$CLAUDE_DIR"
fi
# 4. Install scripts
step 4 "Installing scripts to $BIN_DIR..."
run mkdir -p "$BIN_DIR"
for script in clauded claude-check-env claude-update; do
run cp "$SCRIPT_DIR/bin/$script" "$BIN_DIR/$script"
run chmod +x "$BIN_DIR/$script"
done
# 5. Claude settings
step 5 "Configuring Claude settings..."
run mkdir -p "$HOME/.claude"
if [[ ! -f "$HOME/.claude/settings.json" ]]; then
run cp "$SCRIPT_DIR/config/settings.json" "$HOME/.claude/settings.json"
else
echo " ~/.claude/settings.json already exists, skipping"
fi
# 6. Bashrc additions
step 6 "Updating ~/.bashrc..."
if ! grep -q "DISABLE_AUTOUPDATER" "$HOME/.bashrc" 2>/dev/null; then
if ! $DRY_RUN; then
echo "" >> "$HOME/.bashrc"
cat "$SCRIPT_DIR/config/bashrc.snippet" >> "$HOME/.bashrc"
fi
echo " Added Claude-related exports to ~/.bashrc"
else
echo " ~/.bashrc already configured, skipping"
fi
# 7. Install sharp-wasm32 (image support)
step 7 "Installing Sharp WASM (image support)..."
run npm install -g @img/sharp-wasm32 sharp --force 2>/dev/null || {
echo -e " ${YELLOW}Sharp install failed (optional, images won't work)${NC}"
}
# 8. Done
step 8 "Verifying installation..."
if ! $DRY_RUN; then
echo ""
"$BIN_DIR/claude-check-env"
fi
echo ""
echo -e "${GREEN}=== Installation Complete ===${NC}"
echo ""
echo "Next steps:"
echo " 1. Restart your shell: source ~/.bashrc"
echo " 2. Authenticate: claude auth"
echo " 3. Start Claude: clauded"
echo ""
echo "See docs/TROUBLESHOOTING.md for common issues."
echo ""
echo "For SSH/mDNS host resolution on Termux, see the companion repo:"
echo " https://devops.ingeniumcodex.com/andresgarcia0313/mdns-termux"