File size: 3,708 Bytes
3ac2620
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/usr/bin/env bash
#
# Headroom Proxy LaunchAgent Uninstaller for macOS
#
# This script removes the headroom proxy LaunchAgent and optionally cleans up logs.
#
# Usage: ./uninstall.sh [--remove-logs]
#
# Options:
#   --remove-logs     Remove log directory (prompts if not specified)
#

set -euo pipefail

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# Configuration
PLIST_LABEL="com.headroom.proxy"
PLIST_FILENAME="${PLIST_LABEL}.plist"
PLIST_PATH="${HOME}/Library/LaunchAgents/${PLIST_FILENAME}"
LOG_DIR="${HOME}/Library/Logs/headroom"
USER_UID=$(id -u)

# Parse command line arguments
REMOVE_LOGS=false
UNATTENDED=false
while [[ $# -gt 0 ]]; do
  case $1 in
    --remove-logs)
      REMOVE_LOGS=true
      shift
      ;;
    --unattended)
      UNATTENDED=true
      shift
      ;;
    *)
      echo "Unknown option: $1"
      echo "Usage: $0 [--remove-logs] [--unattended]"
      exit 1
      ;;
  esac
done

# Helper functions
info() {
  echo -e "${BLUE}==>${NC} $*"
}

success() {
  echo -e "${GREEN}βœ“${NC} $*"
}

warning() {
  echo -e "${YELLOW}⚠${NC} $*"
}

error() {
  echo -e "${RED}βœ—${NC} $*" >&2
}

# Check if we're on macOS
OS_NAME=$(uname -s)
if [[ "${OS_NAME}" != "Darwin" ]]; then
  error "This script is only for macOS."
  exit 1
fi

# Check if LaunchAgent is installed
if [[ ! -f "${PLIST_PATH}" ]]; then
  warning "LaunchAgent not found at: ${PLIST_PATH}"
  warning "Nothing to uninstall"
  exit 0
fi

# Check if service is running and stop it
info "Checking service status..."
if launchctl print "gui/${USER_UID}/${PLIST_LABEL}" >/dev/null 2>&1; then
  info "Stopping service..."
  if launchctl bootout "gui/${USER_UID}/${PLIST_LABEL}" 2>/dev/null; then
    success "Service stopped"
  else
    warning "Could not stop service (it may not be running)"
  fi
else
  info "Service is not running"
fi

# Remove plist file
info "Removing LaunchAgent plist..."
if rm -f "${PLIST_PATH}"; then
  success "Removed: ${PLIST_PATH}"
else
  error "Failed to remove: ${PLIST_PATH}"
  exit 1
fi

# Handle log directory
if [[ -d "${LOG_DIR}" ]]; then
  if [[ "${REMOVE_LOGS}" == true ]]; then
    info "Removing log directory..."
    if rm -rf "${LOG_DIR}"; then
      success "Removed: ${LOG_DIR}"
    else
      warning "Failed to remove: ${LOG_DIR}"
    fi
  elif [[ "${UNATTENDED}" == false ]]; then
    read -rp "Remove log directory at ${LOG_DIR}? [y/N] " response
    if [[ "${response}" =~ ^[Yy]$ ]]; then
      if rm -rf "${LOG_DIR}"; then
        success "Removed: ${LOG_DIR}"
      else
        warning "Failed to remove: ${LOG_DIR}"
      fi
    else
      info "Log directory preserved at: ${LOG_DIR}"
    fi
  else
    info "Log directory preserved at: ${LOG_DIR}"
  fi
else
  info "No log directory found"
fi

# Display success message
echo ""
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}βœ“ Headroom proxy uninstalled successfully!${NC}"
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
echo "Next steps:"
echo "  β€’ Remove shell integration from ~/.bashrc or ~/.zshrc"
echo "  β€’ Remove or comment out: export ANTHROPIC_BASE_URL=..."
echo "  β€’ Remove or comment out: source <path-to>/shell-integration.sh"
echo ""
if [[ "${REMOVE_LOGS}" == false ]] && [[ -d "${LOG_DIR}" ]]; then
  echo "Log directory still exists at: ${LOG_DIR}"
  echo "  β€’ Remove manually with: rm -rf ${LOG_DIR}"
  echo ""
fi