| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #!/bin/bash
- # uninstall.sh - Uninstalls OpenCode Agents
- set -e
- # Colors
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- BLUE='\033[0;34m'
- NC='\033[0m' # No Color
- echo ""
- echo -e "${BLUE}OpenCode Agents Uninstaller${NC}"
- echo "=============================="
- echo ""
- # Parse arguments
- UNINSTALL_TYPE=""
- FORCE=false
- while [[ $# -gt 0 ]]; do
- case $1 in
- --global)
- UNINSTALL_TYPE="global"
- shift
- ;;
- --local)
- UNINSTALL_TYPE="local"
- shift
- ;;
- --force)
- FORCE=true
- shift
- ;;
- --help|-h)
- echo "Usage: ./uninstall.sh [options]"
- echo ""
- echo "Options:"
- echo " --global Uninstall from ~/.config/opencode"
- echo " --local Uninstall from current directory .opencode/"
- echo " --force Skip confirmation prompts"
- echo " --help Show this help message"
- echo ""
- exit 0
- ;;
- *)
- echo "Unknown option: $1"
- echo "Use --help for usage information"
- exit 1
- ;;
- esac
- done
- # Determine uninstall location
- if [ -z "$UNINSTALL_TYPE" ]; then
- echo "Select uninstall location:"
- echo " 1) Local (.opencode/ in current directory)"
- echo " 2) Global (~/.config/opencode/)"
- echo ""
- read -p "Enter your choice [1-2]: " choice
-
- case $choice in
- 1) UNINSTALL_TYPE="local" ;;
- 2) UNINSTALL_TYPE="global" ;;
- *)
- echo -e "${RED}Invalid choice${NC}"
- exit 1
- ;;
- esac
- fi
- # Set target directory
- if [ "$UNINSTALL_TYPE" == "global" ]; then
- TARGET_DIR="$HOME/.config/opencode"
- else
- TARGET_DIR="$(pwd)/.opencode"
- fi
- echo ""
- echo -e "${YELLOW}Uninstall location:${NC} $TARGET_DIR"
- echo ""
- # Check if installation exists
- if [ ! -f "$TARGET_DIR/.opencode-agents-version" ]; then
- echo -e "${YELLOW}⚠️ No OpenCode Agents installation found at: $TARGET_DIR${NC}"
- echo ""
- echo "This directory may contain other files or a manual installation."
- echo ""
-
- if [ "$FORCE" != "true" ]; then
- read -p "Continue with uninstall anyway? (y/N): " -n 1 -r
- echo ""
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- echo "Uninstall cancelled."
- exit 0
- fi
- fi
- else
- # Show installation info
- echo "Installation details:"
- cat "$TARGET_DIR/.opencode-agents-version"
- echo ""
- fi
- # Confirm uninstall
- if [ "$FORCE" != "true" ]; then
- echo -e "${RED}⚠️ This will remove all OpenCode Agents files from: $TARGET_DIR${NC}"
- echo ""
- echo "The following will be removed:"
- echo " - $TARGET_DIR/agent/"
- echo " - $TARGET_DIR/command/"
- echo " - $TARGET_DIR/context/"
- echo " - $TARGET_DIR/.opencode-agents-version"
- echo ""
- read -p "Are you sure you want to uninstall? (y/N): " -n 1 -r
- echo ""
-
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- echo "Uninstall cancelled."
- exit 0
- fi
- fi
- # Perform uninstall
- echo ""
- echo "Uninstalling..."
- removed_count=0
- # Remove agent directory
- if [ -d "$TARGET_DIR/agent" ]; then
- rm -rf "$TARGET_DIR/agent"
- echo -e "${GREEN}✓${NC} Removed agents"
- removed_count=$((removed_count + 1))
- fi
- # Remove command directory
- if [ -d "$TARGET_DIR/command" ]; then
- rm -rf "$TARGET_DIR/command"
- echo -e "${GREEN}✓${NC} Removed commands"
- removed_count=$((removed_count + 1))
- fi
- # Remove context directory
- if [ -d "$TARGET_DIR/context" ]; then
- rm -rf "$TARGET_DIR/context"
- echo -e "${GREEN}✓${NC} Removed context files"
- removed_count=$((removed_count + 1))
- fi
- # Remove version file
- if [ -f "$TARGET_DIR/.opencode-agents-version" ]; then
- rm -f "$TARGET_DIR/.opencode-agents-version"
- echo -e "${GREEN}✓${NC} Removed installation metadata"
- fi
- # Remove AGENTS.md.new if it exists
- if [ -f "$TARGET_DIR/AGENTS.md.new" ]; then
- rm -f "$TARGET_DIR/AGENTS.md.new"
- echo -e "${GREEN}✓${NC} Removed AGENTS.md.new"
- fi
- # Check if directory is now empty
- if [ -d "$TARGET_DIR" ]; then
- if [ -z "$(ls -A "$TARGET_DIR")" ]; then
- read -p "Remove empty directory $TARGET_DIR? (y/N): " -n 1 -r
- echo ""
- if [[ $REPLY =~ ^[Yy]$ ]]; then
- rmdir "$TARGET_DIR"
- echo -e "${GREEN}✓${NC} Removed directory"
- fi
- else
- echo ""
- echo -e "${YELLOW}ℹ${NC} Directory not empty. Remaining files:"
- ls -la "$TARGET_DIR"
- fi
- fi
- echo ""
- echo -e "${GREEN}✅ Uninstall complete!${NC}"
- echo ""
- if [ $removed_count -eq 0 ]; then
- echo "No OpenCode Agents files were found to remove."
- else
- echo "Removed $removed_count component(s)."
- fi
- echo ""
- echo "To reinstall, run:"
- echo " ./install.sh"
- echo ""
- exit 0
|