Files

123 lines
4.8 KiB
PowerShell

# Claude Mnemonic - Windows Uninstallation Script
# Usage: irm https://raw.githubusercontent.com/lukaszraczylo/claude-mnemonic/main/scripts/uninstall.ps1 | iex
#
# Options:
# -KeepData Keep the data directory (~/.claude-mnemonic/)
# -Purge Remove everything including data (default)
param(
[switch]$KeepData,
[switch]$Purge
)
$ErrorActionPreference = "Stop"
# Configuration
$InstallDir = "$env:USERPROFILE\.claude\plugins\marketplaces\claude-mnemonic"
$CacheDir = "$env:USERPROFILE\.claude\plugins\cache\claude-mnemonic"
$DataDir = "$env:USERPROFILE\.claude-mnemonic"
$PluginsFile = "$env:USERPROFILE\.claude\plugins\installed_plugins.json"
$SettingsFile = "$env:USERPROFILE\.claude\settings.json"
$MarketplacesFile = "$env:USERPROFILE\.claude\plugins\known_marketplaces.json"
$PluginKey = "claude-mnemonic@claude-mnemonic"
function Write-Info { param($Message) Write-Host "[INFO] $Message" -ForegroundColor Blue }
function Write-Success { param($Message) Write-Host "[OK] $Message" -ForegroundColor Green }
function Write-Warn { param($Message) Write-Host "[WARN] $Message" -ForegroundColor Yellow }
Write-Host ""
Write-Host "================================================================" -ForegroundColor Cyan
Write-Host " Claude Mnemonic - Windows Uninstallation Script " -ForegroundColor Cyan
Write-Host "================================================================" -ForegroundColor Cyan
Write-Host ""
# Stop worker processes
Write-Info "Stopping worker processes..."
Get-Process | Where-Object { $_.ProcessName -like "*worker*" -and $_.Path -like "*claude-mnemonic*" } | Stop-Process -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 1
Write-Success "Worker processes stopped"
# Remove plugin directories
Write-Info "Removing plugin directories..."
if (Test-Path $InstallDir) {
Remove-Item -Recurse -Force $InstallDir -ErrorAction SilentlyContinue
Write-Success "Removed $InstallDir"
} else {
Write-Info "Plugin directory not found (already removed)"
}
if (Test-Path $CacheDir) {
Remove-Item -Recurse -Force $CacheDir -ErrorAction SilentlyContinue
Write-Success "Removed $CacheDir"
}
# Remove from Claude Code configuration
Write-Info "Cleaning up Claude Code configuration..."
try {
if (Test-Path $PluginsFile) {
$Plugins = Get-Content $PluginsFile -Raw | ConvertFrom-Json
if ($Plugins.plugins.PSObject.Properties[$PluginKey]) {
$Plugins.plugins.PSObject.Properties.Remove($PluginKey)
$Plugins | ConvertTo-Json -Depth 10 | Out-File -Encoding UTF8 $PluginsFile
Write-Success "Removed from installed_plugins.json"
}
}
if (Test-Path $SettingsFile) {
$Settings = Get-Content $SettingsFile -Raw | ConvertFrom-Json
$modified = $false
if ($Settings.enabledPlugins -and $Settings.enabledPlugins.PSObject.Properties[$PluginKey]) {
$Settings.enabledPlugins.PSObject.Properties.Remove($PluginKey)
$modified = $true
}
# Remove statusline if it's ours
if ($Settings.statusLine -and $Settings.statusLine.command -match "claude-mnemonic") {
$Settings.PSObject.Properties.Remove("statusLine")
$modified = $true
}
if ($modified) {
$Settings | ConvertTo-Json -Depth 10 | Out-File -Encoding UTF8 $SettingsFile
Write-Success "Removed from settings.json (including statusline)"
}
}
if (Test-Path $MarketplacesFile) {
$Marketplaces = Get-Content $MarketplacesFile -Raw | ConvertFrom-Json
if ($Marketplaces.PSObject.Properties["claude-mnemonic"]) {
$Marketplaces.PSObject.Properties.Remove("claude-mnemonic")
$Marketplaces | ConvertTo-Json -Depth 10 | Out-File -Encoding UTF8 $MarketplacesFile
Write-Success "Removed from known_marketplaces.json"
}
}
} catch {
Write-Warn "Error cleaning up configuration files: $_"
}
# Handle data directory
if (Test-Path $DataDir) {
if ($KeepData) {
Write-Warn "Keeping data directory: $DataDir"
Write-Warn "To remove it later, run: Remove-Item -Recurse -Force $DataDir"
} else {
Write-Info "Removing data directory..."
Remove-Item -Recurse -Force $DataDir -ErrorAction SilentlyContinue
Write-Success "Removed $DataDir"
}
}
Write-Host ""
Write-Host "================================================================" -ForegroundColor Green
Write-Host " Uninstallation Complete! " -ForegroundColor Green
Write-Host "================================================================" -ForegroundColor Green
Write-Host ""
if ($KeepData) {
Write-Host " Data preserved at: $DataDir" -ForegroundColor White
Write-Host " To reinstall: irm .../install.ps1 | iex" -ForegroundColor White
Write-Host ""
}
Write-Success "Claude Mnemonic has been uninstalled"