163 lines
6.0 KiB
Bash
Executable File
163 lines
6.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# RTK Installation Verification Script
|
|
# Helps diagnose if you have the correct rtk (Token Killer) installed
|
|
|
|
set -e
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo "═══════════════════════════════════════════════════════════"
|
|
echo " RTK Installation Verification"
|
|
echo "═══════════════════════════════════════════════════════════"
|
|
echo ""
|
|
|
|
# Check 1: RTK installed?
|
|
echo "1. Checking if RTK is installed..."
|
|
if command -v rtk &> /dev/null; then
|
|
echo -e " ${GREEN}✅ RTK is installed${NC}"
|
|
RTK_PATH=$(which rtk)
|
|
echo " Location: $RTK_PATH"
|
|
else
|
|
echo -e " ${RED}❌ RTK is NOT installed${NC}"
|
|
echo ""
|
|
echo " Install with:"
|
|
echo " curl -fsSL https://github.com/rtk-ai/rtk/blob/master/install.sh| sh"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# Check 2: RTK version
|
|
echo "2. Checking RTK version..."
|
|
RTK_VERSION=$(rtk --version 2>/dev/null || echo "unknown")
|
|
echo " Version: $RTK_VERSION"
|
|
echo ""
|
|
|
|
# Check 3: Is it Token Killer or Type Kit?
|
|
echo "3. Verifying this is Token Killer (not Type Kit)..."
|
|
if rtk gain &>/dev/null || rtk gain --help &>/dev/null; then
|
|
echo -e " ${GREEN}✅ CORRECT - You have Rust Token Killer${NC}"
|
|
CORRECT_RTK=true
|
|
else
|
|
echo -e " ${RED}❌ WRONG - You have Rust Type Kit (different project!)${NC}"
|
|
echo ""
|
|
echo " You installed the wrong package. Fix it with:"
|
|
echo " cargo uninstall rtk"
|
|
echo " curl -fsSL https://github.com/rtk-ai/rtk/blob/master/install.sh | sh"
|
|
CORRECT_RTK=false
|
|
fi
|
|
echo ""
|
|
|
|
if [ "$CORRECT_RTK" = false ]; then
|
|
echo "═══════════════════════════════════════════════════════════"
|
|
echo -e "${RED}INSTALLATION CHECK FAILED${NC}"
|
|
echo "═══════════════════════════════════════════════════════════"
|
|
exit 1
|
|
fi
|
|
|
|
# Check 4: Available features
|
|
echo "4. Checking available features..."
|
|
FEATURES=()
|
|
MISSING_FEATURES=()
|
|
|
|
check_command() {
|
|
local cmd=$1
|
|
local name=$2
|
|
if rtk --help 2>/dev/null | grep -qw "$cmd"; then
|
|
echo -e " ${GREEN}✅${NC} $name"
|
|
FEATURES+=("$name")
|
|
else
|
|
echo -e " ${YELLOW}⚠️${NC} $name (missing - upgrade to fork?)"
|
|
MISSING_FEATURES+=("$name")
|
|
fi
|
|
}
|
|
|
|
check_command "gain" "Token savings analytics"
|
|
check_command "git" "Git operations"
|
|
check_command "gh" "GitHub CLI"
|
|
check_command "pnpm" "pnpm support"
|
|
check_command "vitest" "Vitest test runner"
|
|
check_command "lint" "ESLint/linters"
|
|
check_command "tsc" "TypeScript compiler"
|
|
check_command "next" "Next.js"
|
|
check_command "prettier" "Prettier"
|
|
check_command "playwright" "Playwright E2E"
|
|
check_command "prisma" "Prisma ORM"
|
|
check_command "discover" "Discover missed savings"
|
|
|
|
echo ""
|
|
|
|
# Check 5: CLAUDE.md initialization
|
|
echo "5. Checking Claude Code integration..."
|
|
GLOBAL_INIT=false
|
|
LOCAL_INIT=false
|
|
|
|
if [ -f "$HOME/.claude/CLAUDE.md" ] && grep -q "rtk" "$HOME/.claude/CLAUDE.md"; then
|
|
echo -e " ${GREEN}✅${NC} Global CLAUDE.md initialized (~/.claude/CLAUDE.md)"
|
|
GLOBAL_INIT=true
|
|
else
|
|
echo -e " ${YELLOW}⚠️${NC} Global CLAUDE.md not initialized"
|
|
echo " Run: rtk init --global"
|
|
fi
|
|
|
|
if [ -f "./CLAUDE.md" ] && grep -q "rtk" "./CLAUDE.md"; then
|
|
echo -e " ${GREEN}✅${NC} Local CLAUDE.md initialized (./CLAUDE.md)"
|
|
LOCAL_INIT=true
|
|
else
|
|
echo -e " ${YELLOW}⚠️${NC} Local CLAUDE.md not initialized in current directory"
|
|
echo " Run: rtk init (in your project directory)"
|
|
fi
|
|
echo ""
|
|
|
|
# Check 6: Auto-rewrite hook
|
|
echo "6. Checking auto-rewrite hook (optional but recommended)..."
|
|
if [ -f "$HOME/.claude/hooks/rtk-rewrite.sh" ]; then
|
|
echo -e " ${GREEN}✅${NC} Hook script installed"
|
|
if [ -f "$HOME/.claude/settings.json" ] && grep -q "rtk-rewrite.sh" "$HOME/.claude/settings.json"; then
|
|
echo -e " ${GREEN}✅${NC} Hook enabled in settings.json"
|
|
else
|
|
echo -e " ${YELLOW}⚠️${NC} Hook script exists but not enabled in settings.json"
|
|
echo " See README.md 'Auto-Rewrite Hook' section"
|
|
fi
|
|
else
|
|
echo -e " ${YELLOW}⚠️${NC} Auto-rewrite hook not installed (optional)"
|
|
echo " Install: cp .claude/hooks/rtk-rewrite.sh ~/.claude/hooks/"
|
|
fi
|
|
echo ""
|
|
|
|
# Summary
|
|
echo "═══════════════════════════════════════════════════════════"
|
|
echo " SUMMARY"
|
|
echo "═══════════════════════════════════════════════════════════"
|
|
|
|
if [ ${#MISSING_FEATURES[@]} -gt 0 ]; then
|
|
echo -e "${YELLOW}⚠️ You have a basic RTK installation${NC}"
|
|
echo ""
|
|
echo "Missing features:"
|
|
for feature in "${MISSING_FEATURES[@]}"; do
|
|
echo " - $feature"
|
|
done
|
|
echo ""
|
|
echo "To get all features, install the fork:"
|
|
echo " cargo uninstall rtk"
|
|
echo " curl -fsSL https://github.com/rtk-ai/rtk/blob/master/install.sh | sh"
|
|
echo " cd rtk && git checkout feat/all-features"
|
|
echo " cargo install --path . --force"
|
|
else
|
|
echo -e "${GREEN}✅ Full-featured RTK installation detected${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
if [ "$GLOBAL_INIT" = false ] && [ "$LOCAL_INIT" = false ]; then
|
|
echo -e "${YELLOW}⚠️ RTK not initialized for Claude Code${NC}"
|
|
echo " Run: rtk init --global (for all projects)"
|
|
echo " Or: rtk init (for this project only)"
|
|
fi
|
|
|
|
echo ""
|
|
echo "Need help? See docs/TROUBLESHOOTING.md"
|
|
echo "═══════════════════════════════════════════════════════════"
|