xetup/Remove-ClaudeCode.ps1
Filip Zubik c42943cfa8 PS scripts, web platform, Forgejo CI, xetup.exe launcher
Initial deployment suite for X9.cz MSP Windows 10/11 deployment:
- PowerShell scripts 00-11: admin account, bloatware removal, software (winget+Atera),
  system registry tweaks, default profile, personalization, scheduled tasks,
  BackInfo desktop info, Windows activation, PC identity/rename, network, Dell Update
- Web platform: xetup.x9.cz (nginx), spec/annotation page, /dl shortlink, GitHub mirror
- Forgejo Actions CI: auto-build xetup.exe on push, publish to releases/latest
- Go xetup.exe: embeds all scripts/assets, per-feature checkboxes, load/save config
2026-04-16 14:49:41 +02:00

137 lines
4.8 KiB
PowerShell

#Requires -Version 5.1
<#
.SYNOPSIS
Claude Code - odstraneni citlivych dat a volitelne cele instalace
.USAGE
# Jen citliva data (API key + repo):
.\Remove-ClaudeCode.ps1 -RepoPath "C:\Projects\windows-deployment"
# Vse vcetne Claude Code a Node.js:
.\Remove-ClaudeCode.ps1 -RepoPath "C:\Projects\windows-deployment" -Full
#>
param(
[Parameter(Mandatory)]
[string] $RepoPath,
[switch] $Full
)
$ErrorActionPreference = "Continue"
function Write-Step { param([string]$Msg) Write-Host "`n[REMOVE] $Msg" -ForegroundColor Yellow }
function Write-OK { param([string]$Msg) Write-Host " OK: $Msg" -ForegroundColor Green }
function Write-Skip { param([string]$Msg) Write-Host " SKIP: $Msg" -ForegroundColor DarkGray }
Write-Host "`n========================================" -ForegroundColor Red
Write-Host " Claude Code Cleanup" -ForegroundColor Red
Write-Host "========================================`n" -ForegroundColor Red
# ------------------------------------------------------------
# 1. API KEY
# ------------------------------------------------------------
Write-Step "Removing ANTHROPIC_API_KEY..."
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", $null, "User")
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", $null, "Machine")
$env:ANTHROPIC_API_KEY = $null
Write-OK "API key removed from environment variables"
# Claude Code si uklada API key take v ~/.claude
$claudeConfig = Join-Path $HOME ".claude"
if (Test-Path $claudeConfig) {
Remove-Item $claudeConfig -Recurse -Force
Write-OK "Removed ~/.claude config directory"
} else {
Write-Skip "~/.claude not found"
}
# ------------------------------------------------------------
# 2. REPO
# ------------------------------------------------------------
Write-Step "Removing repository at $RepoPath..."
if (Test-Path $RepoPath) {
# Nejdriv over ze je to skutecne git repo - pojistka
$gitDir = Join-Path $RepoPath ".git"
if (Test-Path $gitDir) {
Remove-Item $RepoPath -Recurse -Force
Write-OK "Repository removed"
} else {
Write-Host " WARN: $RepoPath does not look like a git repo. Skipping for safety." -ForegroundColor Yellow
}
} else {
Write-Skip "Repo path not found: $RepoPath"
}
# ------------------------------------------------------------
# 3. GIT CREDENTIALS (pokud byly ulozeny)
# ------------------------------------------------------------
Write-Step "Clearing git credentials for repo..."
try {
git credential reject | Out-Null
} catch {}
# Windows Credential Manager - GitHub tokeny
try {
$creds = cmdkey /list 2>$null | Select-String "github"
foreach ($cred in $creds) {
$target = ($cred -split '\s+') | Where-Object { $_ -like "*github*" } | Select-Object -First 1
if ($target) {
cmdkey /delete:$target | Out-Null
Write-OK "Removed credential: $target"
}
}
} catch {
Write-Skip "No GitHub credentials found in Credential Manager"
}
# ------------------------------------------------------------
# 4. VOLITELNE - Claude Code + Node.js
# ------------------------------------------------------------
if ($Full) {
Write-Step "Uninstalling Claude Code..."
try {
npm uninstall -g @anthropic-ai/claude-code
Write-OK "Claude Code uninstalled"
} catch {
Write-Skip "Claude Code not installed via npm or npm not available"
}
Write-Step "Uninstalling Node.js..."
try {
winget uninstall OpenJS.NodeJS.LTS --silent
Write-OK "Node.js uninstalled"
} catch {
Write-Skip "Node.js not found via winget - remove manually if needed"
}
}
# ------------------------------------------------------------
# 5. POWERSHELL HISTORY (muze obsahovat API key z parametru)
# ------------------------------------------------------------
Write-Step "Clearing PowerShell history..."
$historyPath = (Get-PSReadlineOption).HistorySavePath
if ($historyPath -and (Test-Path $historyPath)) {
# Vymaz pouze radky obsahujici ApiKey / sk-ant
$lines = Get-Content $historyPath | Where-Object { $_ -notmatch 'ApiKey|sk-ant-|ANTHROPIC' }
$lines | Set-Content $historyPath
Write-OK "Sensitive lines removed from PS history"
} else {
Write-Skip "PS history file not found"
}
# ------------------------------------------------------------
# SUMMARY
# ------------------------------------------------------------
Write-Host "`n========================================" -ForegroundColor Green
Write-Host " Cleanup complete!" -ForegroundColor Green
if ($Full) {
Write-Host " Removed: API key, repo, ~/.claude, Node.js, Claude Code" -ForegroundColor White
} else {
Write-Host " Removed: API key, repo, ~/.claude config" -ForegroundColor White
Write-Host " Node.js and Claude Code kept (use -Full to remove)" -ForegroundColor DarkGray
}
Write-Host "========================================`n" -ForegroundColor Green