squeaky-clean 0.1.11 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cleaners/BaseCleaner.d.ts +57 -0
- package/dist/cleaners/BaseCleaner.d.ts.map +1 -0
- package/dist/cleaners/BaseCleaner.js +299 -0
- package/dist/cleaners/BaseCleaner.js.map +1 -0
- package/dist/cleaners/CleanerRegistry.d.ts +65 -0
- package/dist/cleaners/CleanerRegistry.d.ts.map +1 -0
- package/dist/cleaners/CleanerRegistry.js +112 -0
- package/dist/cleaners/CleanerRegistry.js.map +1 -0
- package/dist/cleaners/androidstudio.d.ts +16 -0
- package/dist/cleaners/androidstudio.d.ts.map +1 -0
- package/dist/cleaners/androidstudio.js +375 -0
- package/dist/cleaners/androidstudio.js.map +1 -0
- package/dist/cleaners/brew.d.ts +4 -0
- package/dist/cleaners/brew.d.ts.map +1 -0
- package/dist/cleaners/brew.js +197 -0
- package/dist/cleaners/brew.js.map +1 -0
- package/dist/cleaners/brewEnhanced.d.ts +18 -0
- package/dist/cleaners/brewEnhanced.d.ts.map +1 -0
- package/dist/cleaners/brewEnhanced.js +255 -0
- package/dist/cleaners/brewEnhanced.js.map +1 -0
- package/dist/cleaners/bun.d.ts +14 -0
- package/dist/cleaners/bun.d.ts.map +1 -0
- package/dist/cleaners/bun.js +207 -0
- package/dist/cleaners/bun.js.map +1 -0
- package/dist/cleaners/cargo.d.ts +15 -0
- package/dist/cleaners/cargo.d.ts.map +1 -0
- package/dist/cleaners/cargo.js +193 -0
- package/dist/cleaners/cargo.js.map +1 -0
- package/dist/cleaners/chrome.d.ts +14 -0
- package/dist/cleaners/chrome.d.ts.map +1 -0
- package/dist/cleaners/chrome.js +250 -0
- package/dist/cleaners/chrome.js.map +1 -0
- package/dist/cleaners/cocoapods.d.ts +16 -0
- package/dist/cleaners/cocoapods.d.ts.map +1 -0
- package/dist/cleaners/cocoapods.js +180 -0
- package/dist/cleaners/cocoapods.js.map +1 -0
- package/dist/cleaners/cursor.d.ts +15 -0
- package/dist/cleaners/cursor.d.ts.map +1 -0
- package/dist/cleaners/cursor.js +377 -0
- package/dist/cleaners/cursor.js.map +1 -0
- package/dist/cleaners/docker.d.ts +35 -0
- package/dist/cleaners/docker.d.ts.map +1 -0
- package/dist/cleaners/docker.js +288 -0
- package/dist/cleaners/docker.js.map +1 -0
- package/dist/cleaners/firefox.d.ts +15 -0
- package/dist/cleaners/firefox.d.ts.map +1 -0
- package/dist/cleaners/firefox.js +281 -0
- package/dist/cleaners/firefox.js.map +1 -0
- package/dist/cleaners/flutter.d.ts +18 -0
- package/dist/cleaners/flutter.d.ts.map +1 -0
- package/dist/cleaners/flutter.js +354 -0
- package/dist/cleaners/flutter.js.map +1 -0
- package/dist/cleaners/goBuild.d.ts +18 -0
- package/dist/cleaners/goBuild.d.ts.map +1 -0
- package/dist/cleaners/goBuild.js +196 -0
- package/dist/cleaners/goBuild.js.map +1 -0
- package/dist/cleaners/gradle.d.ts +14 -0
- package/dist/cleaners/gradle.d.ts.map +1 -0
- package/dist/cleaners/gradle.js +336 -0
- package/dist/cleaners/gradle.js.map +1 -0
- package/dist/cleaners/index.d.ts +51 -0
- package/dist/cleaners/index.d.ts.map +1 -0
- package/dist/cleaners/index.js +267 -0
- package/dist/cleaners/index.js.map +1 -0
- package/dist/cleaners/jetbrains.d.ts +18 -0
- package/dist/cleaners/jetbrains.d.ts.map +1 -0
- package/dist/cleaners/jetbrains.js +441 -0
- package/dist/cleaners/jetbrains.js.map +1 -0
- package/dist/cleaners/maven.d.ts +15 -0
- package/dist/cleaners/maven.d.ts.map +1 -0
- package/dist/cleaners/maven.js +182 -0
- package/dist/cleaners/maven.js.map +1 -0
- package/dist/cleaners/nix.d.ts +4 -0
- package/dist/cleaners/nix.d.ts.map +1 -0
- package/dist/cleaners/nix.js +227 -0
- package/dist/cleaners/nix.js.map +1 -0
- package/dist/cleaners/nodeGyp.d.ts +14 -0
- package/dist/cleaners/nodeGyp.d.ts.map +1 -0
- package/dist/cleaners/nodeGyp.js +157 -0
- package/dist/cleaners/nodeGyp.js.map +1 -0
- package/dist/cleaners/npm.d.ts +14 -0
- package/dist/cleaners/npm.d.ts.map +1 -0
- package/dist/cleaners/npm.js +203 -0
- package/dist/cleaners/npm.js.map +1 -0
- package/dist/cleaners/npmEnhanced.d.ts +19 -0
- package/dist/cleaners/npmEnhanced.d.ts.map +1 -0
- package/dist/cleaners/npmEnhanced.js +336 -0
- package/dist/cleaners/npmEnhanced.js.map +1 -0
- package/dist/cleaners/nuget.d.ts +16 -0
- package/dist/cleaners/nuget.d.ts.map +1 -0
- package/dist/cleaners/nuget.js +197 -0
- package/dist/cleaners/nuget.js.map +1 -0
- package/dist/cleaners/nx.d.ts +18 -0
- package/dist/cleaners/nx.d.ts.map +1 -0
- package/dist/cleaners/nx.js +308 -0
- package/dist/cleaners/nx.js.map +1 -0
- package/dist/cleaners/pip.d.ts +19 -0
- package/dist/cleaners/pip.d.ts.map +1 -0
- package/dist/cleaners/pip.js +334 -0
- package/dist/cleaners/pip.js.map +1 -0
- package/dist/cleaners/pipenv.d.ts +16 -0
- package/dist/cleaners/pipenv.d.ts.map +1 -0
- package/dist/cleaners/pipenv.js +184 -0
- package/dist/cleaners/pipenv.js.map +1 -0
- package/dist/cleaners/playwright.d.ts +15 -0
- package/dist/cleaners/playwright.d.ts.map +1 -0
- package/dist/cleaners/playwright.js +221 -0
- package/dist/cleaners/playwright.js.map +1 -0
- package/dist/cleaners/pnpm.d.ts +14 -0
- package/dist/cleaners/pnpm.d.ts.map +1 -0
- package/dist/cleaners/pnpm.js +214 -0
- package/dist/cleaners/pnpm.js.map +1 -0
- package/dist/cleaners/poetry.d.ts +16 -0
- package/dist/cleaners/poetry.d.ts.map +1 -0
- package/dist/cleaners/poetry.js +184 -0
- package/dist/cleaners/poetry.js.map +1 -0
- package/dist/cleaners/swiftpm.d.ts +16 -0
- package/dist/cleaners/swiftpm.d.ts.map +1 -0
- package/dist/cleaners/swiftpm.js +179 -0
- package/dist/cleaners/swiftpm.js.map +1 -0
- package/dist/cleaners/turbo.d.ts +18 -0
- package/dist/cleaners/turbo.d.ts.map +1 -0
- package/dist/cleaners/turbo.js +325 -0
- package/dist/cleaners/turbo.js.map +1 -0
- package/dist/cleaners/universalBinary.d.ts +20 -0
- package/dist/cleaners/universalBinary.d.ts.map +1 -0
- package/dist/cleaners/universalBinary.js +318 -0
- package/dist/cleaners/universalBinary.js.map +1 -0
- package/dist/cleaners/vite.d.ts +17 -0
- package/dist/cleaners/vite.d.ts.map +1 -0
- package/dist/cleaners/vite.js +274 -0
- package/dist/cleaners/vite.js.map +1 -0
- package/dist/cleaners/vscode.d.ts +15 -0
- package/dist/cleaners/vscode.d.ts.map +1 -0
- package/dist/cleaners/vscode.js +411 -0
- package/dist/cleaners/vscode.js.map +1 -0
- package/dist/cleaners/webpack.d.ts +17 -0
- package/dist/cleaners/webpack.d.ts.map +1 -0
- package/dist/cleaners/webpack.js +263 -0
- package/dist/cleaners/webpack.js.map +1 -0
- package/dist/cleaners/windsurf.d.ts +15 -0
- package/dist/cleaners/windsurf.d.ts.map +1 -0
- package/dist/cleaners/windsurf.js +366 -0
- package/dist/cleaners/windsurf.js.map +1 -0
- package/dist/cleaners/xcode.d.ts +14 -0
- package/dist/cleaners/xcode.d.ts.map +1 -0
- package/dist/cleaners/xcode.js +348 -0
- package/dist/cleaners/xcode.js.map +1 -0
- package/dist/cleaners/yarn.d.ts +16 -0
- package/dist/cleaners/yarn.d.ts.map +1 -0
- package/dist/cleaners/yarn.js +271 -0
- package/dist/cleaners/yarn.js.map +1 -0
- package/dist/cleaners/zed.d.ts +15 -0
- package/dist/cleaners/zed.d.ts.map +1 -0
- package/dist/cleaners/zed.js +383 -0
- package/dist/cleaners/zed.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +373 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auto.d.ts +8 -0
- package/dist/commands/auto.d.ts.map +1 -0
- package/dist/commands/auto.js +251 -0
- package/dist/commands/auto.js.map +1 -0
- package/dist/commands/categories.d.ts +8 -0
- package/dist/commands/categories.d.ts.map +1 -0
- package/dist/commands/categories.js +133 -0
- package/dist/commands/categories.js.map +1 -0
- package/dist/commands/clean.d.ts +3 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +149 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/config.d.ts +14 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +458 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/configDoctor.d.ts +26 -0
- package/dist/commands/configDoctor.d.ts.map +1 -0
- package/dist/commands/configDoctor.js +60 -0
- package/dist/commands/configDoctor.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +141 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/emojis.d.ts +2 -0
- package/dist/commands/emojis.d.ts.map +1 -0
- package/dist/commands/emojis.js +28 -0
- package/dist/commands/emojis.js.map +1 -0
- package/dist/commands/interactive.d.ts +3 -0
- package/dist/commands/interactive.d.ts.map +1 -0
- package/dist/commands/interactive.js +284 -0
- package/dist/commands/interactive.js.map +1 -0
- package/dist/commands/interactiveEnhanced.d.ts +4 -0
- package/dist/commands/interactiveEnhanced.d.ts.map +1 -0
- package/dist/commands/interactiveEnhanced.js +460 -0
- package/dist/commands/interactiveEnhanced.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +68 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/sizes.d.ts +2 -0
- package/dist/commands/sizes.d.ts.map +1 -0
- package/dist/commands/sizes.js +87 -0
- package/dist/commands/sizes.js.map +1 -0
- package/dist/commands/ub.d.ts +10 -0
- package/dist/commands/ub.d.ts.map +1 -0
- package/dist/commands/ub.js +170 -0
- package/dist/commands/ub.js.map +1 -0
- package/dist/config/configSchema.d.ts +93 -0
- package/dist/config/configSchema.d.ts.map +1 -0
- package/dist/config/configSchema.js +88 -0
- package/dist/config/configSchema.js.map +1 -0
- package/dist/config/index.d.ts +35 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +258 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loadConfig.d.ts +7 -0
- package/dist/config/loadConfig.d.ts.map +1 -0
- package/dist/config/loadConfig.js +95 -0
- package/dist/config/loadConfig.js.map +1 -0
- package/dist/config/migrateConfig.d.ts +56 -0
- package/dist/config/migrateConfig.d.ts.map +1 -0
- package/dist/config/migrateConfig.js +102 -0
- package/dist/config/migrateConfig.js.map +1 -0
- package/dist/plugins/discovery.d.ts +6 -0
- package/dist/plugins/discovery.d.ts.map +1 -0
- package/dist/plugins/discovery.js +64 -0
- package/dist/plugins/discovery.js.map +1 -0
- package/dist/profiles/index.d.ts +61 -0
- package/dist/profiles/index.d.ts.map +1 -0
- package/dist/profiles/index.js +406 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/types/index.d.ts +176 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cache.d.ts +58 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +101 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/cli.d.ts +45 -0
- package/dist/utils/cli.d.ts.map +1 -0
- package/dist/utils/cli.js +412 -0
- package/dist/utils/cli.js.map +1 -0
- package/dist/utils/fs.d.ts +32 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +250 -0
- package/dist/utils/fs.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GradleCleaner = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const execa_1 = __importDefault(require("execa"));
|
|
11
|
+
const fs_2 = require("../utils/fs");
|
|
12
|
+
const cli_1 = require("../utils/cli");
|
|
13
|
+
const minimatch_1 = require("minimatch");
|
|
14
|
+
class GradleCleaner {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.name = "gradle";
|
|
17
|
+
this.type = "build-tool";
|
|
18
|
+
this.description = "Gradle build cache, daemon logs, wrapper distributions, and temporary files";
|
|
19
|
+
}
|
|
20
|
+
getCachePaths() {
|
|
21
|
+
const homeDir = os_1.default.homedir();
|
|
22
|
+
return [
|
|
23
|
+
// Main Gradle user home directory contents
|
|
24
|
+
{
|
|
25
|
+
path: path_1.default.join(homeDir, ".gradle", "caches"),
|
|
26
|
+
description: "Gradle build caches and dependency caches",
|
|
27
|
+
category: "Build Cache",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
path: path_1.default.join(homeDir, ".gradle", "daemon"),
|
|
31
|
+
description: "Gradle daemon logs and lock files",
|
|
32
|
+
category: "Daemon",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
path: path_1.default.join(homeDir, ".gradle", "wrapper", "dists"),
|
|
36
|
+
description: "Downloaded Gradle wrapper distributions",
|
|
37
|
+
category: "Wrapper",
|
|
38
|
+
},
|
|
39
|
+
// Build scan and configuration cache
|
|
40
|
+
{
|
|
41
|
+
path: path_1.default.join(homeDir, ".gradle", "configuration-cache"),
|
|
42
|
+
description: "Gradle configuration cache",
|
|
43
|
+
category: "Configuration Cache",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
path: path_1.default.join(homeDir, ".gradle", "buildOutputCleanup"),
|
|
47
|
+
description: "Build output cleanup cache",
|
|
48
|
+
category: "Build Cache",
|
|
49
|
+
},
|
|
50
|
+
// Temporary and worker files
|
|
51
|
+
{
|
|
52
|
+
path: path_1.default.join(homeDir, ".gradle", "workers"),
|
|
53
|
+
description: "Gradle worker process files",
|
|
54
|
+
category: "Workers",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
path: path_1.default.join(homeDir, ".gradle", ".tmp"),
|
|
58
|
+
description: "Temporary Gradle files",
|
|
59
|
+
category: "Temporary",
|
|
60
|
+
},
|
|
61
|
+
// Kotlin daemon and caches (if using Kotlin)
|
|
62
|
+
{
|
|
63
|
+
path: path_1.default.join(homeDir, ".gradle", "kotlin-profile"),
|
|
64
|
+
description: "Kotlin compilation profiling data",
|
|
65
|
+
category: "Kotlin",
|
|
66
|
+
},
|
|
67
|
+
// Android-specific Gradle caches (if doing Android development)
|
|
68
|
+
{
|
|
69
|
+
path: path_1.default.join(homeDir, ".gradle", "caches", "transforms-3"),
|
|
70
|
+
description: "Android transform cache (can be very large)",
|
|
71
|
+
category: "Android",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
path: path_1.default.join(homeDir, ".gradle", "caches", "transforms-2"),
|
|
75
|
+
description: "Legacy Android transform cache",
|
|
76
|
+
category: "Android",
|
|
77
|
+
},
|
|
78
|
+
// Project-specific build directories (in current working directory tree)
|
|
79
|
+
{
|
|
80
|
+
path: path_1.default.join(process.cwd(), "build"),
|
|
81
|
+
description: "Current project build directory",
|
|
82
|
+
category: "Project Build",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
path: path_1.default.join(process.cwd(), ".gradle"),
|
|
86
|
+
description: "Current project Gradle cache",
|
|
87
|
+
category: "Project Build",
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
async isAvailable() {
|
|
92
|
+
try {
|
|
93
|
+
(0, cli_1.printVerbose)("Checking if Gradle is available...");
|
|
94
|
+
// Check for gradle command with timeout
|
|
95
|
+
try {
|
|
96
|
+
await (0, execa_1.default)("gradle", ["--version"], { timeout: 5000 }); // 5 second timeout
|
|
97
|
+
(0, cli_1.printVerbose)("Found gradle command in PATH");
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Try gradlew
|
|
102
|
+
try {
|
|
103
|
+
await (0, execa_1.default)("./gradlew", ["--version"], { timeout: 5000 }); // 5 second timeout
|
|
104
|
+
(0, cli_1.printVerbose)("Found gradlew in current directory");
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Check for Gradle user directory (indicates Gradle usage)
|
|
109
|
+
const homeDir = os_1.default.homedir();
|
|
110
|
+
const gradleHome = path_1.default.join(homeDir, ".gradle");
|
|
111
|
+
if (await (0, fs_2.pathExists)(gradleHome)) {
|
|
112
|
+
(0, cli_1.printVerbose)(`Found Gradle user directory: ${gradleHome}`);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async getCacheInfo() {
|
|
124
|
+
const allPaths = this.getCachePaths();
|
|
125
|
+
const existingPaths = [];
|
|
126
|
+
let totalSize = 0;
|
|
127
|
+
let lastModified;
|
|
128
|
+
const categories = new Map();
|
|
129
|
+
(0, cli_1.printVerbose)(`Checking ${allPaths.length} Gradle cache locations...`);
|
|
130
|
+
for (const { path: cachePath, description, category } of allPaths) {
|
|
131
|
+
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
132
|
+
existingPaths.push(cachePath);
|
|
133
|
+
try {
|
|
134
|
+
const size = await (0, fs_2.getDirectorySize)(cachePath);
|
|
135
|
+
totalSize += size;
|
|
136
|
+
// Track by category
|
|
137
|
+
const existing = categories.get(category) || { size: 0, count: 0 };
|
|
138
|
+
categories.set(category, {
|
|
139
|
+
size: existing.size + size,
|
|
140
|
+
count: existing.count + 1,
|
|
141
|
+
});
|
|
142
|
+
const stats = await fs_1.promises.stat(cachePath);
|
|
143
|
+
if (!lastModified || stats.mtime > lastModified) {
|
|
144
|
+
lastModified = stats.mtime;
|
|
145
|
+
}
|
|
146
|
+
const sizeInMB = (size / (1024 * 1024)).toFixed(1);
|
|
147
|
+
(0, cli_1.printVerbose)(`Found ${category}: ${cachePath} (${sizeInMB} MB) - ${description}`);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
(0, cli_1.printVerbose)(`Error checking ${cachePath}: ${error}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Log category summary
|
|
155
|
+
if (categories.size > 0) {
|
|
156
|
+
(0, cli_1.printVerbose)("=== Gradle Cache Summary by Category ===");
|
|
157
|
+
categories.forEach((info, category) => {
|
|
158
|
+
const sizeInMB = (info.size / (1024 * 1024)).toFixed(1);
|
|
159
|
+
(0, cli_1.printVerbose)(`${category}: ${info.count} locations, ${sizeInMB} MB`);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
name: this.name,
|
|
164
|
+
type: this.type,
|
|
165
|
+
description: this.description,
|
|
166
|
+
paths: existingPaths,
|
|
167
|
+
isInstalled: await this.isAvailable(),
|
|
168
|
+
size: totalSize,
|
|
169
|
+
lastModified,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
async clear(dryRun = false, _criteria, cacheInfo, protectedPaths = []) {
|
|
173
|
+
const info = cacheInfo || (await this.getCacheInfo());
|
|
174
|
+
const clearedPaths = [];
|
|
175
|
+
const sizeBefore = info.size || 0;
|
|
176
|
+
let success = true;
|
|
177
|
+
let error;
|
|
178
|
+
if (!info.isInstalled) {
|
|
179
|
+
return {
|
|
180
|
+
name: this.name,
|
|
181
|
+
success: false,
|
|
182
|
+
error: "Gradle is not available",
|
|
183
|
+
clearedPaths: [],
|
|
184
|
+
sizeBefore: 0,
|
|
185
|
+
sizeAfter: 0,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
if (info.paths.length === 0) {
|
|
189
|
+
(0, cli_1.printVerbose)("No Gradle cache directories found");
|
|
190
|
+
return {
|
|
191
|
+
name: this.name,
|
|
192
|
+
success: true,
|
|
193
|
+
clearedPaths: [],
|
|
194
|
+
sizeBefore: 0,
|
|
195
|
+
sizeAfter: 0,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
if (dryRun) {
|
|
200
|
+
(0, cli_1.printVerbose)(`[DRY RUN] Would clear ${info.paths.length} Gradle cache locations:`);
|
|
201
|
+
const pathsWithInfo = this.getCachePaths();
|
|
202
|
+
for (const cachePath of info.paths) {
|
|
203
|
+
const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
|
|
204
|
+
(0, cli_1.printVerbose)(` • ${pathInfo?.category || "Unknown"}: ${cachePath}`);
|
|
205
|
+
if (pathInfo?.description) {
|
|
206
|
+
(0, cli_1.printVerbose)(` ${pathInfo.description}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
(0, cli_1.printVerbose)("Would also try to stop Gradle daemons gracefully");
|
|
210
|
+
return {
|
|
211
|
+
name: this.name,
|
|
212
|
+
success: true,
|
|
213
|
+
sizeBefore,
|
|
214
|
+
sizeAfter: sizeBefore,
|
|
215
|
+
clearedPaths: info.paths,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
// First, try to stop Gradle daemons gracefully
|
|
219
|
+
try {
|
|
220
|
+
(0, cli_1.printVerbose)("Stopping Gradle daemons...");
|
|
221
|
+
await (0, execa_1.default)("gradle", ["--stop"], { timeout: 10000 }); // Shorter timeout
|
|
222
|
+
(0, cli_1.printVerbose)("Gradle daemons stopped successfully");
|
|
223
|
+
}
|
|
224
|
+
catch (stopError) {
|
|
225
|
+
(0, cli_1.printVerbose)(`Could not stop Gradle daemons: ${stopError}`);
|
|
226
|
+
// Continue anyway - the daemon files might still be clearable
|
|
227
|
+
}
|
|
228
|
+
const pathsWithInfo = this.getCachePaths();
|
|
229
|
+
// Clear caches by category priority (safest first)
|
|
230
|
+
const priorityOrder = [
|
|
231
|
+
"Temporary",
|
|
232
|
+
"Daemon",
|
|
233
|
+
"Workers",
|
|
234
|
+
"Kotlin",
|
|
235
|
+
"Configuration Cache",
|
|
236
|
+
"Build Cache",
|
|
237
|
+
"Android",
|
|
238
|
+
"Project Build",
|
|
239
|
+
"Wrapper", // Keep wrapper dists for last as they take time to re-download
|
|
240
|
+
];
|
|
241
|
+
const categorizedPaths = new Map();
|
|
242
|
+
for (const cachePath of info.paths) {
|
|
243
|
+
const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
|
|
244
|
+
const category = pathInfo?.category || "Other";
|
|
245
|
+
if (!categorizedPaths.has(category)) {
|
|
246
|
+
categorizedPaths.set(category, []);
|
|
247
|
+
}
|
|
248
|
+
categorizedPaths.get(category).push(cachePath);
|
|
249
|
+
}
|
|
250
|
+
// Clear in priority order
|
|
251
|
+
for (const category of priorityOrder) {
|
|
252
|
+
const paths = categorizedPaths.get(category);
|
|
253
|
+
if (!paths)
|
|
254
|
+
continue;
|
|
255
|
+
(0, cli_1.printVerbose)(`Clearing ${category} caches...`);
|
|
256
|
+
for (const cachePath of paths) {
|
|
257
|
+
// Check if the path is protected
|
|
258
|
+
const isProtected = protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true }));
|
|
259
|
+
if (isProtected) {
|
|
260
|
+
(0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
|
|
261
|
+
continue; // Skip this path
|
|
262
|
+
}
|
|
263
|
+
try {
|
|
264
|
+
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
265
|
+
const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
|
|
266
|
+
(0, cli_1.printVerbose)(`Clearing ${category}: ${cachePath}`);
|
|
267
|
+
if (pathInfo?.description) {
|
|
268
|
+
(0, cli_1.printVerbose)(` Purpose: ${pathInfo.description}`);
|
|
269
|
+
}
|
|
270
|
+
await (0, fs_2.safeRmrf)(cachePath);
|
|
271
|
+
clearedPaths.push(cachePath);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
catch (pathError) {
|
|
275
|
+
(0, cli_1.printVerbose)(`Failed to clear ${cachePath}: ${pathError}`);
|
|
276
|
+
success = false;
|
|
277
|
+
if (!error) {
|
|
278
|
+
error = `Failed to clear some Gradle cache directories: ${pathError}`;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Handle any remaining uncategorized paths
|
|
284
|
+
const remainingPaths = info.paths.filter((p) => !clearedPaths.includes(p));
|
|
285
|
+
for (const cachePath of remainingPaths) {
|
|
286
|
+
// Check if the path is protected
|
|
287
|
+
const isProtected = protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true }));
|
|
288
|
+
if (isProtected) {
|
|
289
|
+
(0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
|
|
290
|
+
continue; // Skip this path
|
|
291
|
+
}
|
|
292
|
+
try {
|
|
293
|
+
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
294
|
+
(0, cli_1.printVerbose)(`Clearing remaining cache: ${cachePath}`);
|
|
295
|
+
await (0, fs_2.safeRmrf)(cachePath);
|
|
296
|
+
clearedPaths.push(cachePath);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
catch (pathError) {
|
|
300
|
+
(0, cli_1.printVerbose)(`Failed to clear ${cachePath}: ${pathError}`);
|
|
301
|
+
success = false;
|
|
302
|
+
if (!error) {
|
|
303
|
+
error = `Failed to clear some cache directories: ${pathError}`;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
if (sizeBefore > 0) {
|
|
308
|
+
(0, cli_1.printVerbose)(`Freed space from Gradle cache data`);
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
311
|
+
name: this.name,
|
|
312
|
+
success,
|
|
313
|
+
sizeBefore,
|
|
314
|
+
sizeAfter: 0, // Set to 0 as we don't want to rescan
|
|
315
|
+
error,
|
|
316
|
+
clearedPaths,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
catch (clearError) {
|
|
320
|
+
return {
|
|
321
|
+
name: this.name,
|
|
322
|
+
success: false,
|
|
323
|
+
sizeBefore,
|
|
324
|
+
sizeAfter: sizeBefore,
|
|
325
|
+
error: clearError instanceof Error ? clearError.message : String(clearError),
|
|
326
|
+
clearedPaths: [],
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
static create() {
|
|
331
|
+
return new GradleCleaner();
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
exports.GradleCleaner = GradleCleaner;
|
|
335
|
+
exports.default = GradleCleaner.create();
|
|
336
|
+
//# sourceMappingURL=gradle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gradle.js","sourceRoot":"","sources":["../../src/cleaners/gradle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CleanerModule, CacheInfo, ClearResult, CacheType } from "../types";
|
|
2
|
+
export declare class CacheManager {
|
|
3
|
+
private cleaners;
|
|
4
|
+
constructor();
|
|
5
|
+
/**
|
|
6
|
+
* Get all available cleaners
|
|
7
|
+
*/
|
|
8
|
+
getAllCleaners(): CleanerModule[];
|
|
9
|
+
/**
|
|
10
|
+
* Get cleaners filtered by type
|
|
11
|
+
*/
|
|
12
|
+
getCleanersByType(type: CacheType): CleanerModule[];
|
|
13
|
+
/**
|
|
14
|
+
* Get enabled cleaners based on configuration
|
|
15
|
+
*/
|
|
16
|
+
getEnabledCleaners(): CleanerModule[];
|
|
17
|
+
/**
|
|
18
|
+
* Get cleaner by name
|
|
19
|
+
*/
|
|
20
|
+
getCleaner(name: string): CleanerModule | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Get cache info for all enabled cleaners
|
|
23
|
+
*/
|
|
24
|
+
getAllCacheInfo(): Promise<CacheInfo[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Clean caches for enabled cleaners
|
|
27
|
+
*/
|
|
28
|
+
cleanAllCaches(options?: {
|
|
29
|
+
dryRun?: boolean;
|
|
30
|
+
types?: CacheType[];
|
|
31
|
+
exclude?: string[];
|
|
32
|
+
include?: string[];
|
|
33
|
+
subCachesToClear?: Map<string, string[]>;
|
|
34
|
+
}): Promise<ClearResult[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Get total cache sizes by type
|
|
37
|
+
*/
|
|
38
|
+
getCacheSizesByType(): Promise<Record<CacheType, number>>;
|
|
39
|
+
/**
|
|
40
|
+
* Get summary statistics
|
|
41
|
+
*/
|
|
42
|
+
getSummary(): Promise<{
|
|
43
|
+
totalSize: number;
|
|
44
|
+
totalCleaners: number;
|
|
45
|
+
installedCleaners: number;
|
|
46
|
+
enabledCleaners: number;
|
|
47
|
+
sizesByType: Record<CacheType, number>;
|
|
48
|
+
}>;
|
|
49
|
+
}
|
|
50
|
+
export declare const cacheManager: CacheManager;
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cleaners/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAkD5E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAA6B;;IAmD7C;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,EAAE;IAInD;;OAEG;IACH,kBAAkB,IAAI,aAAa,EAAE;IAMrC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAInD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAgD7C;;OAEG;IACG,cAAc,CAClB,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACrC,GACL,OAAO,CAAC,WAAW,EAAE,CAAC;IAkGzB;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAkB/D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;KACxC,CAAC;CAkCH;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.cacheManager = exports.CacheManager = void 0;
|
|
7
|
+
const config_1 = require("../config");
|
|
8
|
+
const cli_1 = require("../utils/cli");
|
|
9
|
+
const minimatch_1 = require("minimatch");
|
|
10
|
+
// Import all cleaner modules
|
|
11
|
+
// Package managers
|
|
12
|
+
const npm_1 = __importDefault(require("./npm"));
|
|
13
|
+
const yarn_1 = __importDefault(require("./yarn"));
|
|
14
|
+
const pnpm_1 = __importDefault(require("./pnpm"));
|
|
15
|
+
const bun_1 = __importDefault(require("./bun"));
|
|
16
|
+
const pip_1 = __importDefault(require("./pip"));
|
|
17
|
+
const brew_1 = __importDefault(require("./brew"));
|
|
18
|
+
const nix_1 = __importDefault(require("./nix"));
|
|
19
|
+
const cargo_1 = __importDefault(require("./cargo"));
|
|
20
|
+
const poetry_1 = __importDefault(require("./poetry"));
|
|
21
|
+
const pipenv_1 = __importDefault(require("./pipenv"));
|
|
22
|
+
const cocoapods_1 = __importDefault(require("./cocoapods"));
|
|
23
|
+
const swiftpm_1 = __importDefault(require("./swiftpm"));
|
|
24
|
+
const nuget_1 = __importDefault(require("./nuget"));
|
|
25
|
+
// Build tools
|
|
26
|
+
const webpack_1 = __importDefault(require("./webpack"));
|
|
27
|
+
const vite_1 = __importDefault(require("./vite"));
|
|
28
|
+
const nx_1 = __importDefault(require("./nx"));
|
|
29
|
+
const turbo_1 = __importDefault(require("./turbo"));
|
|
30
|
+
const flutter_1 = __importDefault(require("./flutter"));
|
|
31
|
+
const nodeGyp_1 = __importDefault(require("./nodeGyp"));
|
|
32
|
+
const goBuild_1 = __importDefault(require("./goBuild"));
|
|
33
|
+
const maven_1 = __importDefault(require("./maven"));
|
|
34
|
+
const playwright_1 = __importDefault(require("./playwright"));
|
|
35
|
+
// IDEs
|
|
36
|
+
const xcode_1 = __importDefault(require("./xcode"));
|
|
37
|
+
const vscode_1 = __importDefault(require("./vscode"));
|
|
38
|
+
const androidstudio_1 = __importDefault(require("./androidstudio"));
|
|
39
|
+
const jetbrains_1 = __importDefault(require("./jetbrains"));
|
|
40
|
+
const windsurf_1 = __importDefault(require("./windsurf"));
|
|
41
|
+
const cursor_1 = __importDefault(require("./cursor"));
|
|
42
|
+
const zed_1 = __importDefault(require("./zed"));
|
|
43
|
+
// Browsers
|
|
44
|
+
const chrome_1 = __importDefault(require("./chrome"));
|
|
45
|
+
const firefox_1 = __importDefault(require("./firefox"));
|
|
46
|
+
// System tools
|
|
47
|
+
const docker_1 = __importDefault(require("./docker"));
|
|
48
|
+
const gradle_1 = __importDefault(require("./gradle"));
|
|
49
|
+
const universalBinary_1 = __importDefault(require("./universalBinary"));
|
|
50
|
+
class CacheManager {
|
|
51
|
+
constructor() {
|
|
52
|
+
this.cleaners = new Map();
|
|
53
|
+
// Register all cleaner modules
|
|
54
|
+
// Package managers
|
|
55
|
+
this.cleaners.set("npm", npm_1.default);
|
|
56
|
+
this.cleaners.set("yarn", yarn_1.default);
|
|
57
|
+
this.cleaners.set("pnpm", pnpm_1.default);
|
|
58
|
+
this.cleaners.set("bun", bun_1.default);
|
|
59
|
+
this.cleaners.set("pip", pip_1.default);
|
|
60
|
+
this.cleaners.set("brew", brew_1.default);
|
|
61
|
+
this.cleaners.set("nix", nix_1.default);
|
|
62
|
+
this.cleaners.set("cargo", cargo_1.default);
|
|
63
|
+
this.cleaners.set("poetry", poetry_1.default);
|
|
64
|
+
this.cleaners.set("pipenv", pipenv_1.default);
|
|
65
|
+
this.cleaners.set("cocoapods", cocoapods_1.default);
|
|
66
|
+
this.cleaners.set("swiftpm", swiftpm_1.default);
|
|
67
|
+
this.cleaners.set("nuget", nuget_1.default);
|
|
68
|
+
// Build tools
|
|
69
|
+
this.cleaners.set("webpack", webpack_1.default);
|
|
70
|
+
this.cleaners.set("vite", vite_1.default);
|
|
71
|
+
this.cleaners.set("nx", nx_1.default);
|
|
72
|
+
this.cleaners.set("turbo", turbo_1.default);
|
|
73
|
+
this.cleaners.set("flutter", flutter_1.default);
|
|
74
|
+
this.cleaners.set("node-gyp", nodeGyp_1.default);
|
|
75
|
+
this.cleaners.set("go-build", goBuild_1.default);
|
|
76
|
+
this.cleaners.set("maven", maven_1.default);
|
|
77
|
+
this.cleaners.set("playwright", playwright_1.default);
|
|
78
|
+
// IDEs and development tools
|
|
79
|
+
this.cleaners.set("xcode", xcode_1.default);
|
|
80
|
+
this.cleaners.set("vscode", vscode_1.default);
|
|
81
|
+
this.cleaners.set("androidstudio", androidstudio_1.default);
|
|
82
|
+
this.cleaners.set("jetbrains", jetbrains_1.default);
|
|
83
|
+
this.cleaners.set("windsurf", windsurf_1.default);
|
|
84
|
+
this.cleaners.set("cursor", cursor_1.default);
|
|
85
|
+
this.cleaners.set("zed", zed_1.default);
|
|
86
|
+
// Browsers
|
|
87
|
+
this.cleaners.set("chrome", chrome_1.default);
|
|
88
|
+
this.cleaners.set("firefox", firefox_1.default);
|
|
89
|
+
// System tools
|
|
90
|
+
this.cleaners.set("docker", docker_1.default);
|
|
91
|
+
this.cleaners.set("gradle", gradle_1.default);
|
|
92
|
+
this.cleaners.set("universal-binary", universalBinary_1.default);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get all available cleaners
|
|
96
|
+
*/
|
|
97
|
+
getAllCleaners() {
|
|
98
|
+
return Array.from(this.cleaners.values());
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get cleaners filtered by type
|
|
102
|
+
*/
|
|
103
|
+
getCleanersByType(type) {
|
|
104
|
+
return this.getAllCleaners().filter((cleaner) => cleaner.type === type);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get enabled cleaners based on configuration
|
|
108
|
+
*/
|
|
109
|
+
getEnabledCleaners() {
|
|
110
|
+
return this.getAllCleaners().filter((cleaner) => config_1.config.isToolEnabled(cleaner.name));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get cleaner by name
|
|
114
|
+
*/
|
|
115
|
+
getCleaner(name) {
|
|
116
|
+
return this.cleaners.get(name);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get cache info for all enabled cleaners
|
|
120
|
+
*/
|
|
121
|
+
async getAllCacheInfo() {
|
|
122
|
+
const enabledCleaners = this.getEnabledCleaners();
|
|
123
|
+
const protectedPaths = config_1.config.getProtectedPaths(); // Get protected paths
|
|
124
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Scanning ${enabledCleaners.length} enabled cache types...`);
|
|
125
|
+
// Parallel execution for 10-25x performance improvement
|
|
126
|
+
const scanResults = await Promise.all(enabledCleaners.map(async (cleaner) => {
|
|
127
|
+
try {
|
|
128
|
+
(0, cli_1.printVerbose)(`Checking ${cleaner.name} caches...`);
|
|
129
|
+
const info = await cleaner.getCacheInfo();
|
|
130
|
+
// Check if any of the cache's paths are protected
|
|
131
|
+
const isProtected = info.paths.some((cachePath) => protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true })));
|
|
132
|
+
if (isProtected) {
|
|
133
|
+
(0, cli_1.printVerbose)(`Skipping protected cache: ${cleaner.name}`);
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
return info;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
(0, cli_1.printVerbose)(`Error getting cache info for ${cleaner.name}: ${error}`);
|
|
140
|
+
return {
|
|
141
|
+
name: cleaner.name,
|
|
142
|
+
type: cleaner.type,
|
|
143
|
+
description: cleaner.description,
|
|
144
|
+
paths: [],
|
|
145
|
+
isInstalled: false,
|
|
146
|
+
size: 0,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}));
|
|
150
|
+
// Filter out null results (protected caches)
|
|
151
|
+
return scanResults.filter((result) => result !== null);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Clean caches for enabled cleaners
|
|
155
|
+
*/
|
|
156
|
+
async cleanAllCaches(options = {}) {
|
|
157
|
+
let cleaners = this.getEnabledCleaners();
|
|
158
|
+
const allCacheInfos = await this.getAllCacheInfo(); // Get all cache info once
|
|
159
|
+
const protectedPaths = config_1.config.getProtectedPaths(); // Get protected paths
|
|
160
|
+
// Filter by types if specified
|
|
161
|
+
if (options.types && options.types.length > 0) {
|
|
162
|
+
cleaners = cleaners.filter((cleaner) => options.types.includes(cleaner.type));
|
|
163
|
+
}
|
|
164
|
+
// Include specific tools if specified (this takes precedence over exclude)
|
|
165
|
+
if (options.include && options.include.length > 0) {
|
|
166
|
+
cleaners = cleaners.filter((cleaner) => options.include.includes(cleaner.name));
|
|
167
|
+
}
|
|
168
|
+
// Exclude specific tools if specified
|
|
169
|
+
if (options.exclude && options.exclude.length > 0) {
|
|
170
|
+
cleaners = cleaners.filter((cleaner) => !options.exclude.includes(cleaner.name));
|
|
171
|
+
}
|
|
172
|
+
const results = [];
|
|
173
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Cleaning ${cleaners.length} cache types...`);
|
|
174
|
+
for (const cleaner of cleaners) {
|
|
175
|
+
try {
|
|
176
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Processing ${cleaner.name}...`);
|
|
177
|
+
const cacheInfoForCleaner = allCacheInfos.find((info) => info.name === cleaner.name); // Find corresponding info
|
|
178
|
+
let result;
|
|
179
|
+
if (options.subCachesToClear &&
|
|
180
|
+
options.subCachesToClear.has(cleaner.name)) {
|
|
181
|
+
const categoryIds = options.subCachesToClear.get(cleaner.name);
|
|
182
|
+
if (cleaner.clearByCategory) {
|
|
183
|
+
result = await cleaner.clearByCategory(categoryIds, options.dryRun, cacheInfoForCleaner, protectedPaths);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Fallback if clearByCategory is not implemented for this cleaner
|
|
187
|
+
(0, cli_1.printVerbose)(`Warning: ${cleaner.name} does not support granular clearing by category. Clearing all.`);
|
|
188
|
+
result = await cleaner.clear(options.dryRun, undefined, cacheInfoForCleaner, protectedPaths);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
result = await cleaner.clear(options.dryRun, undefined, cacheInfoForCleaner, protectedPaths);
|
|
193
|
+
}
|
|
194
|
+
results.push(result);
|
|
195
|
+
if (result.success && !options.dryRun) {
|
|
196
|
+
const savedMB = ((result.sizeBefore || 0) - (result.sizeAfter || 0)) /
|
|
197
|
+
(1024 * 1024);
|
|
198
|
+
if (savedMB > 0) {
|
|
199
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.bubbles} ${cleaner.name}: Freed ${savedMB.toFixed(1)} MB`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
(0, cli_1.printVerbose)(`Error cleaning ${cleaner.name}: ${error}`);
|
|
205
|
+
results.push({
|
|
206
|
+
name: cleaner.name,
|
|
207
|
+
success: false,
|
|
208
|
+
error: error instanceof Error ? error.message : String(error),
|
|
209
|
+
clearedPaths: [],
|
|
210
|
+
sizeBefore: 0,
|
|
211
|
+
sizeAfter: 0,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return results;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get total cache sizes by type
|
|
219
|
+
*/
|
|
220
|
+
async getCacheSizesByType() {
|
|
221
|
+
const allCacheInfo = await this.getAllCacheInfo();
|
|
222
|
+
const sizesByType = {
|
|
223
|
+
"package-manager": 0,
|
|
224
|
+
"build-tool": 0,
|
|
225
|
+
browser: 0,
|
|
226
|
+
ide: 0,
|
|
227
|
+
system: 0,
|
|
228
|
+
other: 0,
|
|
229
|
+
};
|
|
230
|
+
for (const info of allCacheInfo) {
|
|
231
|
+
sizesByType[info.type] += info.size || 0;
|
|
232
|
+
}
|
|
233
|
+
return sizesByType;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Get summary statistics
|
|
237
|
+
*/
|
|
238
|
+
async getSummary() {
|
|
239
|
+
const allCacheInfo = await this.getAllCacheInfo();
|
|
240
|
+
// Calculate sizes by type from the same data to avoid double scanning
|
|
241
|
+
const sizesByType = {
|
|
242
|
+
"package-manager": 0,
|
|
243
|
+
"build-tool": 0,
|
|
244
|
+
browser: 0,
|
|
245
|
+
ide: 0,
|
|
246
|
+
system: 0,
|
|
247
|
+
other: 0,
|
|
248
|
+
};
|
|
249
|
+
for (const info of allCacheInfo) {
|
|
250
|
+
sizesByType[info.type] += info.size || 0;
|
|
251
|
+
}
|
|
252
|
+
const totalSize = allCacheInfo.reduce((sum, info) => sum + (info.size || 0), 0);
|
|
253
|
+
const installedCleaners = allCacheInfo.filter((info) => info.isInstalled).length;
|
|
254
|
+
const enabledCleaners = this.getEnabledCleaners().length;
|
|
255
|
+
return {
|
|
256
|
+
totalSize,
|
|
257
|
+
totalCleaners: this.getAllCleaners().length,
|
|
258
|
+
installedCleaners,
|
|
259
|
+
enabledCleaners,
|
|
260
|
+
sizesByType,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
exports.CacheManager = CacheManager;
|
|
265
|
+
// Export singleton instance
|
|
266
|
+
exports.cacheManager = new CacheManager();
|
|
267
|
+
//# sourceMappingURL=index.js.map
|