squeaky-clean 0.1.1
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/LICENSE +21 -0
- package/README.md +465 -0
- 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/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/docker.d.ts +35 -0
- package/dist/cleaners/docker.d.ts.map +1 -0
- package/dist/cleaners/docker.js +285 -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 +247 -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/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 +198 -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/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/pnpm.d.ts +14 -0
- package/dist/cleaners/pnpm.d.ts.map +1 -0
- package/dist/cleaners/pnpm.js +209 -0
- package/dist/cleaners/pnpm.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/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 +14 -0
- package/dist/cleaners/vscode.d.ts.map +1 -0
- package/dist/cleaners/vscode.js +354 -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/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 +266 -0
- package/dist/cleaners/yarn.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +346 -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 +224 -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 +445 -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/config/index.d.ts +26 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +228 -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 +103 -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 +361 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/types/index.d.ts +161 -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/cli.d.ts +44 -0
- package/dist/utils/cli.d.ts.map +1 -0
- package/dist/utils/cli.js +407 -0
- package/dist/utils/cli.js.map +1 -0
- package/dist/utils/fs.d.ts +15 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +218 -0
- package/dist/utils/fs.js.map +1 -0
- package/package.json +122 -0
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AndroidStudioCleaner = void 0;
|
|
37
|
+
const fs_1 = require("fs");
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const fs_2 = require("../utils/fs");
|
|
41
|
+
const cli_1 = require("../utils/cli");
|
|
42
|
+
const minimatch_1 = require("minimatch");
|
|
43
|
+
class AndroidStudioCleaner {
|
|
44
|
+
constructor() {
|
|
45
|
+
this.name = "androidstudio";
|
|
46
|
+
this.type = "ide";
|
|
47
|
+
this.description = "Android Studio IDE caches, build files, and gradle wrapper";
|
|
48
|
+
}
|
|
49
|
+
async findAndroidStudioInstallation() {
|
|
50
|
+
const platform = os.platform();
|
|
51
|
+
if (platform === "darwin") {
|
|
52
|
+
// macOS
|
|
53
|
+
const macPaths = [
|
|
54
|
+
"/Applications/Android Studio.app",
|
|
55
|
+
"/Applications/Android Studio Preview.app",
|
|
56
|
+
];
|
|
57
|
+
for (const appPath of macPaths) {
|
|
58
|
+
if (await (0, fs_2.pathExists)(appPath)) {
|
|
59
|
+
return appPath;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (platform === "win32") {
|
|
64
|
+
// Windows
|
|
65
|
+
const windowsPaths = [
|
|
66
|
+
"C:\\Program Files\\Android\\Android Studio",
|
|
67
|
+
"C:\\Program Files (x86)\\Android\\Android Studio",
|
|
68
|
+
];
|
|
69
|
+
for (const installPath of windowsPaths) {
|
|
70
|
+
if (await (0, fs_2.pathExists)(installPath)) {
|
|
71
|
+
return installPath;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Linux
|
|
77
|
+
const linuxPaths = [
|
|
78
|
+
"/opt/android-studio",
|
|
79
|
+
"/usr/local/android-studio",
|
|
80
|
+
path.join(os.homedir(), "android-studio"),
|
|
81
|
+
];
|
|
82
|
+
for (const installPath of linuxPaths) {
|
|
83
|
+
if (await (0, fs_2.pathExists)(installPath)) {
|
|
84
|
+
return installPath;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
async getAndroidStudioCachePaths() {
|
|
91
|
+
const paths = [];
|
|
92
|
+
const homeDir = os.homedir();
|
|
93
|
+
const platform = os.platform();
|
|
94
|
+
// Platform-specific Android Studio cache paths
|
|
95
|
+
if (platform === "darwin") {
|
|
96
|
+
// macOS paths
|
|
97
|
+
const macPaths = [
|
|
98
|
+
path.join(homeDir, "Library", "Caches", "AndroidStudio*"),
|
|
99
|
+
path.join(homeDir, "Library", "Application Support", "AndroidStudio*"),
|
|
100
|
+
path.join(homeDir, "Library", "Logs", "AndroidStudio*"),
|
|
101
|
+
path.join(homeDir, "Library", "Preferences", "AndroidStudio*"),
|
|
102
|
+
path.join(homeDir, ".android"),
|
|
103
|
+
path.join(homeDir, ".gradle", "caches"),
|
|
104
|
+
];
|
|
105
|
+
for (const cachePath of macPaths) {
|
|
106
|
+
if (cachePath.includes("*")) {
|
|
107
|
+
// Handle glob patterns for versioned directories
|
|
108
|
+
const baseDir = path.dirname(cachePath);
|
|
109
|
+
const pattern = path.basename(cachePath).replace("*", "");
|
|
110
|
+
try {
|
|
111
|
+
if (await (0, fs_2.pathExists)(baseDir)) {
|
|
112
|
+
const entries = await fs_1.promises.readdir(baseDir);
|
|
113
|
+
for (const entry of entries) {
|
|
114
|
+
if (entry.startsWith(pattern)) {
|
|
115
|
+
paths.push(path.join(baseDir, entry));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Ignore errors
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (await (0, fs_2.pathExists)(cachePath)) {
|
|
125
|
+
paths.push(cachePath);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else if (platform === "win32") {
|
|
130
|
+
// Windows paths
|
|
131
|
+
const windowsPaths = [
|
|
132
|
+
path.join(homeDir, "AppData", "Local", "Android", "Sdk", ".temp"),
|
|
133
|
+
path.join(homeDir, "AppData", "Local", "Google", "AndroidStudio*"),
|
|
134
|
+
path.join(homeDir, "AppData", "Roaming", "Google", "AndroidStudio*"),
|
|
135
|
+
path.join(homeDir, ".android"),
|
|
136
|
+
path.join(homeDir, ".gradle", "caches"),
|
|
137
|
+
];
|
|
138
|
+
for (const cachePath of windowsPaths) {
|
|
139
|
+
if (cachePath.includes("*")) {
|
|
140
|
+
const baseDir = path.dirname(cachePath);
|
|
141
|
+
const pattern = path.basename(cachePath).replace("*", "");
|
|
142
|
+
try {
|
|
143
|
+
if (await (0, fs_2.pathExists)(baseDir)) {
|
|
144
|
+
const entries = await fs_1.promises.readdir(baseDir);
|
|
145
|
+
for (const entry of entries) {
|
|
146
|
+
if (entry.startsWith(pattern)) {
|
|
147
|
+
paths.push(path.join(baseDir, entry));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// Ignore errors
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else if (await (0, fs_2.pathExists)(cachePath)) {
|
|
157
|
+
paths.push(cachePath);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
// Linux paths
|
|
163
|
+
const linuxPaths = [
|
|
164
|
+
path.join(homeDir, ".cache", "Google", "AndroidStudio*"),
|
|
165
|
+
path.join(homeDir, ".config", "Google", "AndroidStudio*"),
|
|
166
|
+
path.join(homeDir, ".local", "share", "Google", "AndroidStudio*"),
|
|
167
|
+
path.join(homeDir, ".android"),
|
|
168
|
+
path.join(homeDir, ".gradle", "caches"),
|
|
169
|
+
];
|
|
170
|
+
for (const cachePath of linuxPaths) {
|
|
171
|
+
if (cachePath.includes("*")) {
|
|
172
|
+
const baseDir = path.dirname(cachePath);
|
|
173
|
+
const pattern = path.basename(cachePath).replace("*", "");
|
|
174
|
+
try {
|
|
175
|
+
if (await (0, fs_2.pathExists)(baseDir)) {
|
|
176
|
+
const entries = await fs_1.promises.readdir(baseDir);
|
|
177
|
+
for (const entry of entries) {
|
|
178
|
+
if (entry.startsWith(pattern)) {
|
|
179
|
+
paths.push(path.join(baseDir, entry));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// Ignore errors
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else if (await (0, fs_2.pathExists)(cachePath)) {
|
|
189
|
+
paths.push(cachePath);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Look for Android projects with build directories
|
|
194
|
+
try {
|
|
195
|
+
const projectBuildDirs = await this.findAndroidProjectBuildDirs();
|
|
196
|
+
paths.push(...projectBuildDirs);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
(0, cli_1.printVerbose)(`Error finding Android project build dirs: ${error}`);
|
|
200
|
+
}
|
|
201
|
+
return [...new Set(paths)]; // Remove duplicates
|
|
202
|
+
}
|
|
203
|
+
async findAndroidProjectBuildDirs() {
|
|
204
|
+
const buildDirs = [];
|
|
205
|
+
const homeDir = os.homedir();
|
|
206
|
+
// Common project directories
|
|
207
|
+
const searchDirs = [
|
|
208
|
+
path.join(homeDir, "AndroidStudioProjects"),
|
|
209
|
+
path.join(homeDir, "Projects"),
|
|
210
|
+
path.join(homeDir, "Development"),
|
|
211
|
+
path.join(homeDir, "dev"),
|
|
212
|
+
path.join(homeDir, "Documents"),
|
|
213
|
+
process.cwd(),
|
|
214
|
+
];
|
|
215
|
+
for (const searchDir of searchDirs) {
|
|
216
|
+
if (await (0, fs_2.pathExists)(searchDir)) {
|
|
217
|
+
try {
|
|
218
|
+
const projects = await this.findAndroidProjectsRecursively(searchDir, 2);
|
|
219
|
+
buildDirs.push(...projects);
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
(0, cli_1.printVerbose)(`Error searching ${searchDir}: ${error}`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return buildDirs;
|
|
227
|
+
}
|
|
228
|
+
async findAndroidProjectsRecursively(dir, maxDepth) {
|
|
229
|
+
if (maxDepth <= 0)
|
|
230
|
+
return [];
|
|
231
|
+
const buildDirs = [];
|
|
232
|
+
try {
|
|
233
|
+
const entries = await fs_1.promises.readdir(dir, { withFileTypes: true });
|
|
234
|
+
for (const entry of entries) {
|
|
235
|
+
if (entry.isDirectory() && !entry.name.startsWith(".")) {
|
|
236
|
+
const fullPath = path.join(dir, entry.name);
|
|
237
|
+
// Check if this is an Android project
|
|
238
|
+
const gradleFile = path.join(fullPath, "build.gradle");
|
|
239
|
+
const gradleKtsFile = path.join(fullPath, "build.gradle.kts");
|
|
240
|
+
const androidManifest = path.join(fullPath, "app", "src", "main", "AndroidManifest.xml");
|
|
241
|
+
if ((await (0, fs_2.pathExists)(gradleFile)) ||
|
|
242
|
+
(await (0, fs_2.pathExists)(gradleKtsFile)) ||
|
|
243
|
+
(await (0, fs_2.pathExists)(androidManifest))) {
|
|
244
|
+
// This looks like an Android project, add build directories
|
|
245
|
+
const buildLocations = [
|
|
246
|
+
path.join(fullPath, "build"),
|
|
247
|
+
path.join(fullPath, "app", "build"),
|
|
248
|
+
path.join(fullPath, ".gradle"),
|
|
249
|
+
];
|
|
250
|
+
for (const buildDir of buildLocations) {
|
|
251
|
+
if (await (0, fs_2.pathExists)(buildDir)) {
|
|
252
|
+
buildDirs.push(buildDir);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Recursively search subdirectories
|
|
257
|
+
const subBuildDirs = await this.findAndroidProjectsRecursively(fullPath, maxDepth - 1);
|
|
258
|
+
buildDirs.push(...subBuildDirs);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
// Ignore permission errors
|
|
264
|
+
}
|
|
265
|
+
return buildDirs;
|
|
266
|
+
}
|
|
267
|
+
async isAvailable() {
|
|
268
|
+
// Check if Android Studio is installed OR if there are Android projects
|
|
269
|
+
const installation = await this.findAndroidStudioInstallation();
|
|
270
|
+
if (installation) {
|
|
271
|
+
(0, cli_1.printVerbose)(`Found Android Studio at ${installation}`);
|
|
272
|
+
return true;
|
|
273
|
+
}
|
|
274
|
+
// Check for Android SDK
|
|
275
|
+
const homeDir = os.homedir();
|
|
276
|
+
const sdkPaths = [
|
|
277
|
+
path.join(homeDir, "Android", "Sdk"),
|
|
278
|
+
path.join(homeDir, "Library", "Android", "sdk"), // macOS
|
|
279
|
+
"/opt/android-sdk",
|
|
280
|
+
];
|
|
281
|
+
for (const sdkPath of sdkPaths) {
|
|
282
|
+
if (await (0, fs_2.pathExists)(sdkPath)) {
|
|
283
|
+
(0, cli_1.printVerbose)(`Found Android SDK at ${sdkPath}`);
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
async getCacheInfo() {
|
|
290
|
+
const isInstalled = await this.isAvailable();
|
|
291
|
+
if (!isInstalled) {
|
|
292
|
+
return {
|
|
293
|
+
name: this.name,
|
|
294
|
+
type: this.type,
|
|
295
|
+
description: this.description,
|
|
296
|
+
paths: [],
|
|
297
|
+
isInstalled: false,
|
|
298
|
+
size: 0,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
const cachePaths = await this.getAndroidStudioCachePaths();
|
|
302
|
+
let totalSize = 0;
|
|
303
|
+
const validPaths = [];
|
|
304
|
+
for (const cachePath of cachePaths) {
|
|
305
|
+
try {
|
|
306
|
+
const size = await (0, fs_2.getDirectorySize)(cachePath, true); // Use estimated size for large dirs
|
|
307
|
+
totalSize += size;
|
|
308
|
+
validPaths.push(cachePath);
|
|
309
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.folder} ${cachePath}: ${(size / (1024 * 1024)).toFixed(1)} MB`);
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
(0, cli_1.printVerbose)(`Error calculating size for ${cachePath}: ${error}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
name: this.name,
|
|
317
|
+
type: this.type,
|
|
318
|
+
description: this.description,
|
|
319
|
+
paths: validPaths,
|
|
320
|
+
isInstalled: true,
|
|
321
|
+
size: totalSize,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
async clear(dryRun = false, _criteria, cacheInfo, protectedPaths = []) {
|
|
325
|
+
const info = cacheInfo || (await this.getCacheInfo());
|
|
326
|
+
if (!info.isInstalled) {
|
|
327
|
+
return {
|
|
328
|
+
name: this.name,
|
|
329
|
+
success: false,
|
|
330
|
+
error: "Android Studio is not available",
|
|
331
|
+
clearedPaths: [],
|
|
332
|
+
sizeBefore: 0,
|
|
333
|
+
sizeAfter: 0,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
const sizeBefore = info.size || 0;
|
|
337
|
+
const clearedPaths = [];
|
|
338
|
+
let errors = [];
|
|
339
|
+
for (const cachePath of info.paths) {
|
|
340
|
+
// Check if the path is protected
|
|
341
|
+
const isProtected = protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true }));
|
|
342
|
+
if (isProtected) {
|
|
343
|
+
(0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
|
|
344
|
+
continue; // Skip this path
|
|
345
|
+
}
|
|
346
|
+
try {
|
|
347
|
+
if (dryRun) {
|
|
348
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Would clear: ${cachePath}`);
|
|
349
|
+
clearedPaths.push(cachePath);
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Clearing: ${cachePath}`);
|
|
353
|
+
await (0, fs_2.safeRmrf)(cachePath);
|
|
354
|
+
clearedPaths.push(cachePath);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
catch (error) {
|
|
358
|
+
const errorMsg = `Failed to clear ${cachePath}: ${error}`;
|
|
359
|
+
errors.push(errorMsg);
|
|
360
|
+
(0, cli_1.printVerbose)(errorMsg);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return {
|
|
364
|
+
name: this.name,
|
|
365
|
+
success: errors.length === 0,
|
|
366
|
+
sizeBefore,
|
|
367
|
+
sizeAfter: 0, // Set to 0 as we don't want to rescan
|
|
368
|
+
error: errors.length > 0 ? errors.join("; ") : undefined,
|
|
369
|
+
clearedPaths,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
exports.AndroidStudioCleaner = AndroidStudioCleaner;
|
|
374
|
+
exports.default = new AndroidStudioCleaner();
|
|
375
|
+
//# sourceMappingURL=androidstudio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"androidstudio.js","sourceRoot":"","sources":["../../src/cleaners/androidstudio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brew.d.ts","sourceRoot":"","sources":["../../src/cleaners/brew.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAKd,MAAM,UAAU,CAAC;AAOlB,QAAA,MAAM,OAAO,EAAE,aA4Md,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
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
|
+
const fs_1 = require("../utils/fs");
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const cli_1 = require("../utils/cli");
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const minimatch_1 = require("minimatch");
|
|
11
|
+
const cleaner = {
|
|
12
|
+
name: "brew",
|
|
13
|
+
type: "package-manager",
|
|
14
|
+
description: "Homebrew package manager caches and old versions",
|
|
15
|
+
async isAvailable() {
|
|
16
|
+
// Only works on macOS and Linux
|
|
17
|
+
if (os_1.default.platform() !== "darwin" && os_1.default.platform() !== "linux") {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
// Check if brew is installed
|
|
21
|
+
try {
|
|
22
|
+
(0, child_process_1.execSync)("which brew", { stdio: "ignore" });
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
async getCacheInfo() {
|
|
30
|
+
// Only works on macOS and Linux
|
|
31
|
+
if (os_1.default.platform() !== "darwin" && os_1.default.platform() !== "linux") {
|
|
32
|
+
return {
|
|
33
|
+
name: this.name,
|
|
34
|
+
type: this.type,
|
|
35
|
+
description: this.description,
|
|
36
|
+
paths: [],
|
|
37
|
+
isInstalled: false,
|
|
38
|
+
size: 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Check if brew is installed
|
|
42
|
+
let isInstalled = false;
|
|
43
|
+
try {
|
|
44
|
+
(0, child_process_1.execSync)("which brew", { stdio: "ignore" });
|
|
45
|
+
isInstalled = true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return {
|
|
49
|
+
name: this.name,
|
|
50
|
+
type: this.type,
|
|
51
|
+
description: this.description,
|
|
52
|
+
paths: [],
|
|
53
|
+
isInstalled: false,
|
|
54
|
+
size: 0,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const paths = [];
|
|
58
|
+
let totalSize = 0;
|
|
59
|
+
try {
|
|
60
|
+
// Get Homebrew cache location
|
|
61
|
+
const cacheDir = (0, child_process_1.execSync)("brew --cache", { encoding: "utf8" }).trim();
|
|
62
|
+
if (cacheDir) {
|
|
63
|
+
paths.push(cacheDir);
|
|
64
|
+
totalSize += await (0, fs_1.getCacheSize)(cacheDir);
|
|
65
|
+
}
|
|
66
|
+
// Get old versions size (this is a dry-run to get size)
|
|
67
|
+
try {
|
|
68
|
+
const cleanupDryRun = (0, child_process_1.execSync)("brew cleanup -s --dry-run 2>&1", {
|
|
69
|
+
encoding: "utf8",
|
|
70
|
+
});
|
|
71
|
+
const sizeMatch = cleanupDryRun.match(/Would remove: .* \((.+?)\)/);
|
|
72
|
+
if (sizeMatch && sizeMatch[1]) {
|
|
73
|
+
const sizeStr = sizeMatch[1];
|
|
74
|
+
// Parse size (e.g., "1.2GB", "500MB", "100KB")
|
|
75
|
+
const sizeNum = parseFloat(sizeStr);
|
|
76
|
+
if (sizeStr.includes("GB")) {
|
|
77
|
+
totalSize += sizeNum * 1024 * 1024 * 1024;
|
|
78
|
+
}
|
|
79
|
+
else if (sizeStr.includes("MB")) {
|
|
80
|
+
totalSize += sizeNum * 1024 * 1024;
|
|
81
|
+
}
|
|
82
|
+
else if (sizeStr.includes("KB")) {
|
|
83
|
+
totalSize += sizeNum * 1024;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Ignore if cleanup dry-run fails
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
(0, cli_1.printVerbose)(`Error getting Homebrew cache info: ${error}`);
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
name: this.name,
|
|
96
|
+
type: this.type,
|
|
97
|
+
description: this.description,
|
|
98
|
+
paths,
|
|
99
|
+
isInstalled,
|
|
100
|
+
size: totalSize,
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
async clear(dryRun, _criteria, cacheInfo, protectedPaths = []) {
|
|
104
|
+
const info = cacheInfo || (await this.getCacheInfo());
|
|
105
|
+
const sizeBefore = info.size || 0;
|
|
106
|
+
const clearedPaths = [];
|
|
107
|
+
if (!info.isInstalled) {
|
|
108
|
+
return {
|
|
109
|
+
name: this.name,
|
|
110
|
+
success: false,
|
|
111
|
+
error: "Homebrew is not installed",
|
|
112
|
+
clearedPaths: [],
|
|
113
|
+
sizeBefore: 0,
|
|
114
|
+
sizeAfter: 0,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// Check if any of the paths are protected
|
|
118
|
+
const pathsToClear = info.paths.filter((cachePath) => {
|
|
119
|
+
const isProtected = protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true }));
|
|
120
|
+
if (isProtected) {
|
|
121
|
+
(0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
|
|
122
|
+
}
|
|
123
|
+
return !isProtected;
|
|
124
|
+
});
|
|
125
|
+
if (pathsToClear.length === 0 && !dryRun) {
|
|
126
|
+
// If all paths are protected and not a dry run
|
|
127
|
+
(0, cli_1.printVerbose)("All Homebrew cache paths are protected. Nothing to clear.");
|
|
128
|
+
return {
|
|
129
|
+
name: this.name,
|
|
130
|
+
success: true,
|
|
131
|
+
clearedPaths: [],
|
|
132
|
+
sizeBefore: 0,
|
|
133
|
+
sizeAfter: 0,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
if (dryRun) {
|
|
138
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.info} [DRY RUN] Would run: brew cleanup -s`);
|
|
139
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.info} [DRY RUN] Would clear Homebrew cache and old versions`);
|
|
140
|
+
// Get what would be cleaned
|
|
141
|
+
try {
|
|
142
|
+
const cleanupDryRun = (0, child_process_1.execSync)("brew cleanup -s --dry-run 2>&1", {
|
|
143
|
+
encoding: "utf8",
|
|
144
|
+
});
|
|
145
|
+
const lines = cleanupDryRun.split("\n");
|
|
146
|
+
for (const line of lines) {
|
|
147
|
+
if (line.includes("Would remove:") || line.includes("==>")) {
|
|
148
|
+
(0, cli_1.printVerbose)(` ${line.trim()}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// Ignore dry-run errors
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
name: this.name,
|
|
157
|
+
success: true,
|
|
158
|
+
clearedPaths: pathsToClear, // Only report paths that would be cleared
|
|
159
|
+
sizeBefore,
|
|
160
|
+
sizeAfter: sizeBefore,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// Run actual cleanup
|
|
164
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Running Homebrew cleanup...`);
|
|
165
|
+
try {
|
|
166
|
+
// Clean up old versions and cache
|
|
167
|
+
(0, child_process_1.execSync)("brew cleanup -s", { stdio: "inherit" });
|
|
168
|
+
clearedPaths.push(...pathsToClear); // Only push paths that were actually cleared
|
|
169
|
+
// Also prune old downloads
|
|
170
|
+
(0, child_process_1.execSync)("brew cleanup --prune=all", { stdio: "ignore" });
|
|
171
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.bubbles} Homebrew cleanup completed`);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.warning} Partial Homebrew cleanup: ${error}`);
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
name: this.name,
|
|
178
|
+
success: true,
|
|
179
|
+
clearedPaths,
|
|
180
|
+
sizeBefore,
|
|
181
|
+
sizeAfter: 0, // Set to 0 as we don't want to rescan
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
return {
|
|
186
|
+
name: this.name,
|
|
187
|
+
success: false,
|
|
188
|
+
error: error instanceof Error ? error.message : String(error),
|
|
189
|
+
clearedPaths: [],
|
|
190
|
+
sizeBefore,
|
|
191
|
+
sizeAfter: sizeBefore,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
exports.default = cleaner;
|
|
197
|
+
//# sourceMappingURL=brew.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brew.js","sourceRoot":"","sources":["../../src/cleaners/brew.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseCleaner } from "./BaseCleaner";
|
|
2
|
+
import { CacheInfo, CacheCategory, CacheType } from "../types";
|
|
3
|
+
export declare class HomebrewEnhancedCleaner extends BaseCleaner {
|
|
4
|
+
name: string;
|
|
5
|
+
type: CacheType;
|
|
6
|
+
description: string;
|
|
7
|
+
private getCachePaths;
|
|
8
|
+
isAvailable(): Promise<boolean>;
|
|
9
|
+
getCacheInfo(): Promise<CacheInfo>;
|
|
10
|
+
getCacheCategories(): Promise<CacheCategory[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Clear cache with Homebrew's built-in commands when possible
|
|
13
|
+
*/
|
|
14
|
+
clear(dryRun?: boolean, criteria?: any, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<any>;
|
|
15
|
+
}
|
|
16
|
+
declare const _default: HomebrewEnhancedCleaner;
|
|
17
|
+
export default _default;
|
|
18
|
+
//# sourceMappingURL=brewEnhanced.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brewEnhanced.d.ts","sourceRoot":"","sources":["../../src/cleaners/brewEnhanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAQ/D,qBAAa,uBAAwB,SAAQ,WAAW;IACtD,IAAI,SAAc;IAClB,IAAI,EAAE,SAAS,CAAqB;IACpC,WAAW,SAA2D;IAEtE,OAAO,CAAC,aAAa;IAkDf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAqElC,kBAAkB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAmGpD;;OAEG;IACG,KAAK,CACT,MAAM,CAAC,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,GAAG,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,GAAG,CAAC;CA6BhB;;AAED,wBAA6C"}
|