mirror of
https://github.com/tw93/Mole.git
synced 2026-02-12 14:01:17 +00:00
feat: add cleanup support for Elixir, Haskell, OCaml, and Editors
Windows port of biplavbarua's extended dev cleanup feature: - Elixir: Mix archives and Hex cache cleanup - Haskell: Cabal packages/store and Stack programs cache - OCaml: Opam download and repo cache - Editors: VS Code, VS Code Insiders, Zed, Sublime Text, Atom caches Mirrors the macOS implementation from PR #287
This commit is contained in:
@@ -412,6 +412,171 @@ function Clear-CloudCliCaches {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Elixir/Erlang Ecosystem
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
function Clear-ElixirCaches {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Clean Elixir Mix and Hex caches
|
||||||
|
#>
|
||||||
|
|
||||||
|
# Mix archives cache
|
||||||
|
$mixArchivesPath = "$env:USERPROFILE\.mix\archives"
|
||||||
|
if (Test-Path $mixArchivesPath) {
|
||||||
|
Clear-DirectoryContents -Path $mixArchivesPath -Description "Mix archives cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hex cache
|
||||||
|
$hexCachePath = "$env:USERPROFILE\.hex\cache"
|
||||||
|
if (Test-Path $hexCachePath) {
|
||||||
|
Clear-DirectoryContents -Path $hexCachePath -Description "Hex cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hex packages
|
||||||
|
$hexPackagesPath = "$env:USERPROFILE\.hex\packages"
|
||||||
|
if (Test-Path $hexPackagesPath) {
|
||||||
|
Clear-DirectoryContents -Path $hexPackagesPath -Description "Hex packages cache"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Haskell Ecosystem
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
function Clear-HaskellCaches {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Clean Haskell Cabal and Stack caches
|
||||||
|
#>
|
||||||
|
|
||||||
|
# Cabal packages cache
|
||||||
|
$cabalPackagesPath = "$env:USERPROFILE\.cabal\packages"
|
||||||
|
if (Test-Path $cabalPackagesPath) {
|
||||||
|
Clear-DirectoryContents -Path $cabalPackagesPath -Description "Cabal packages cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cabal store
|
||||||
|
$cabalStorePath = "$env:USERPROFILE\.cabal\store"
|
||||||
|
if (Test-Path $cabalStorePath) {
|
||||||
|
# Only clean old/unused packages - be careful here
|
||||||
|
$oldDirs = Get-ChildItem -Path $cabalStorePath -Directory -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-90) }
|
||||||
|
if ($oldDirs) {
|
||||||
|
foreach ($dir in $oldDirs) {
|
||||||
|
Remove-SafeItem -Path $dir.FullName -Description "Cabal old store ($($dir.Name))" -Recurse
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Stack programs cache
|
||||||
|
$stackProgramsPath = "$env:USERPROFILE\.stack\programs"
|
||||||
|
if (Test-Path $stackProgramsPath) {
|
||||||
|
Clear-DirectoryContents -Path $stackProgramsPath -Description "Stack programs cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Stack snapshots (be careful - these are needed for builds)
|
||||||
|
$stackSnapshotsPath = "$env:USERPROFILE\.stack\snapshots"
|
||||||
|
if (Test-Path $stackSnapshotsPath) {
|
||||||
|
# Only clean temp files
|
||||||
|
$tempFiles = Get-ChildItem -Path $stackSnapshotsPath -Recurse -Filter "*.tmp" -ErrorAction SilentlyContinue
|
||||||
|
if ($tempFiles) {
|
||||||
|
$paths = $tempFiles | ForEach-Object { $_.FullName }
|
||||||
|
Remove-SafeItems -Paths $paths -Description "Stack temp files"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# OCaml Ecosystem
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
function Clear-OCamlCaches {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Clean OCaml Opam caches
|
||||||
|
#>
|
||||||
|
|
||||||
|
# Opam download cache
|
||||||
|
$opamDownloadCache = "$env:USERPROFILE\.opam\download-cache"
|
||||||
|
if (Test-Path $opamDownloadCache) {
|
||||||
|
Clear-DirectoryContents -Path $opamDownloadCache -Description "Opam download cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Opam repo cache
|
||||||
|
$opamRepoCache = "$env:USERPROFILE\.opam\repo"
|
||||||
|
if (Test-Path $opamRepoCache) {
|
||||||
|
$cacheDirs = Get-ChildItem -Path $opamRepoCache -Directory -Filter "*cache*" -ErrorAction SilentlyContinue
|
||||||
|
foreach ($dir in $cacheDirs) {
|
||||||
|
Clear-DirectoryContents -Path $dir.FullName -Description "Opam repo cache"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Editor Caches (VS Code, Zed, etc.)
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
function Clear-EditorCaches {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Clean VS Code, Zed, and other editor caches
|
||||||
|
#>
|
||||||
|
|
||||||
|
# VS Code cached data
|
||||||
|
$vscodeCachePaths = @(
|
||||||
|
"$env:APPDATA\Code\Cache"
|
||||||
|
"$env:APPDATA\Code\CachedData"
|
||||||
|
"$env:APPDATA\Code\CachedExtensions"
|
||||||
|
"$env:APPDATA\Code\CachedExtensionVSIXs"
|
||||||
|
"$env:APPDATA\Code\Code Cache"
|
||||||
|
"$env:APPDATA\Code\GPUCache"
|
||||||
|
"$env:APPDATA\Code\User\workspaceStorage"
|
||||||
|
"$env:LOCALAPPDATA\Microsoft\vscode-cpptools"
|
||||||
|
)
|
||||||
|
foreach ($path in $vscodeCachePaths) {
|
||||||
|
if (Test-Path $path) {
|
||||||
|
Clear-DirectoryContents -Path $path -Description "VS Code cache"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# VS Code Insiders
|
||||||
|
$vscodeInsidersCachePaths = @(
|
||||||
|
"$env:APPDATA\Code - Insiders\Cache"
|
||||||
|
"$env:APPDATA\Code - Insiders\CachedData"
|
||||||
|
"$env:APPDATA\Code - Insiders\User\workspaceStorage"
|
||||||
|
)
|
||||||
|
foreach ($path in $vscodeInsidersCachePaths) {
|
||||||
|
if (Test-Path $path) {
|
||||||
|
Clear-DirectoryContents -Path $path -Description "VS Code Insiders cache"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Zed editor cache
|
||||||
|
$zedCachePaths = @(
|
||||||
|
"$env:LOCALAPPDATA\Zed\cache"
|
||||||
|
"$env:APPDATA\Zed\cache"
|
||||||
|
)
|
||||||
|
foreach ($path in $zedCachePaths) {
|
||||||
|
if (Test-Path $path) {
|
||||||
|
Clear-DirectoryContents -Path $path -Description "Zed cache"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Sublime Text cache
|
||||||
|
$sublimeCachePath = "$env:APPDATA\Sublime Text\Cache"
|
||||||
|
if (Test-Path $sublimeCachePath) {
|
||||||
|
Clear-DirectoryContents -Path $sublimeCachePath -Description "Sublime Text cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Atom cache (legacy)
|
||||||
|
$atomCachePath = "$env:APPDATA\.atom\compile-cache"
|
||||||
|
if (Test-Path $atomCachePath) {
|
||||||
|
Clear-DirectoryContents -Path $atomCachePath -Description "Atom compile cache"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# IDE Caches
|
# IDE Caches
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
@@ -516,13 +681,25 @@ function Invoke-DevToolsCleanup {
|
|||||||
# JVM ecosystem
|
# JVM ecosystem
|
||||||
Clear-JvmCaches
|
Clear-JvmCaches
|
||||||
|
|
||||||
|
# Elixir/Erlang ecosystem
|
||||||
|
Clear-ElixirCaches
|
||||||
|
|
||||||
|
# Haskell ecosystem
|
||||||
|
Clear-HaskellCaches
|
||||||
|
|
||||||
|
# OCaml ecosystem
|
||||||
|
Clear-OCamlCaches
|
||||||
|
|
||||||
# Containers
|
# Containers
|
||||||
Clear-DockerCaches
|
Clear-DockerCaches
|
||||||
|
|
||||||
# Cloud CLI tools
|
# Cloud CLI tools
|
||||||
Clear-CloudCliCaches
|
Clear-CloudCliCaches
|
||||||
|
|
||||||
# IDEs
|
# Editor caches (VS Code, Zed, etc.)
|
||||||
|
Clear-EditorCaches
|
||||||
|
|
||||||
|
# IDEs (JetBrains, Visual Studio)
|
||||||
Clear-IdeCaches
|
Clear-IdeCaches
|
||||||
|
|
||||||
# Git
|
# Git
|
||||||
|
|||||||
Reference in New Issue
Block a user