squeaky-clean 0.1.2 → 0.1.4

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.
Files changed (37) hide show
  1. package/dist/cleaners/cargo.d.ts +15 -0
  2. package/dist/cleaners/cargo.d.ts.map +1 -0
  3. package/dist/cleaners/cargo.js +193 -0
  4. package/dist/cleaners/cargo.js.map +1 -0
  5. package/dist/cleaners/cocoapods.d.ts +16 -0
  6. package/dist/cleaners/cocoapods.d.ts.map +1 -0
  7. package/dist/cleaners/cocoapods.js +180 -0
  8. package/dist/cleaners/cocoapods.js.map +1 -0
  9. package/dist/cleaners/maven.d.ts +15 -0
  10. package/dist/cleaners/maven.d.ts.map +1 -0
  11. package/dist/cleaners/maven.js +182 -0
  12. package/dist/cleaners/maven.js.map +1 -0
  13. package/dist/cleaners/nuget.d.ts +16 -0
  14. package/dist/cleaners/nuget.d.ts.map +1 -0
  15. package/dist/cleaners/nuget.js +197 -0
  16. package/dist/cleaners/nuget.js.map +1 -0
  17. package/dist/cleaners/pipenv.d.ts +16 -0
  18. package/dist/cleaners/pipenv.d.ts.map +1 -0
  19. package/dist/cleaners/pipenv.js +184 -0
  20. package/dist/cleaners/pipenv.js.map +1 -0
  21. package/dist/cleaners/poetry.d.ts +16 -0
  22. package/dist/cleaners/poetry.d.ts.map +1 -0
  23. package/dist/cleaners/poetry.js +184 -0
  24. package/dist/cleaners/poetry.js.map +1 -0
  25. package/dist/cleaners/swiftpm.d.ts +16 -0
  26. package/dist/cleaners/swiftpm.d.ts.map +1 -0
  27. package/dist/cleaners/swiftpm.js +179 -0
  28. package/dist/cleaners/swiftpm.js.map +1 -0
  29. package/dist/config/index.d.ts +5 -0
  30. package/dist/config/index.d.ts.map +1 -1
  31. package/dist/config/index.js +13 -0
  32. package/dist/config/index.js.map +1 -1
  33. package/dist/utils/cli.d.ts +1 -1
  34. package/dist/utils/cli.d.ts.map +1 -1
  35. package/dist/utils/cli.js +4 -1
  36. package/dist/utils/cli.js.map +1 -1
  37. package/package.json +2 -2
@@ -0,0 +1,15 @@
1
+ import { CacheInfo, CacheSelectionCriteria, ClearResult, CleanerModule } from "../types";
2
+ declare class CargoCleaner implements CleanerModule {
3
+ name: string;
4
+ type: "package-manager";
5
+ description: string;
6
+ private buildCategories;
7
+ isAvailable(): Promise<boolean>;
8
+ getCacheInfo(): Promise<CacheInfo>;
9
+ private clearSelected;
10
+ clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
11
+ clearByCategory(categoryIds: string[], dryRun?: boolean, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
12
+ }
13
+ declare const _default: CargoCleaner;
14
+ export default _default;
15
+ //# sourceMappingURL=cargo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cargo.d.ts","sourceRoot":"","sources":["../../src/cleaners/cargo.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,SAAS,EACT,sBAAsB,EACtB,WAAW,EACX,aAAa,EACd,MAAM,UAAU,CAAC;AASlB,cAAM,YAAa,YAAW,aAAa;IACzC,IAAI,SAAW;IACf,IAAI,EAAG,iBAAiB,CAAU;IAClC,WAAW,SACmE;YAEhE,eAAe;IAiDvB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;YAkC1B,aAAa;IAwErB,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,WAAW,CAAC;IAsBjB,eAAe,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,WAAW,CAAC;CAgBxB;;AAED,wBAAkC"}
@@ -0,0 +1,193 @@
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 path_1 = __importDefault(require("path"));
7
+ const os_1 = __importDefault(require("os"));
8
+ const execa_1 = __importDefault(require("execa"));
9
+ const fs_1 = require("fs");
10
+ const fs_2 = require("../utils/fs");
11
+ const cli_1 = require("../utils/cli");
12
+ const minimatch_1 = require("minimatch");
13
+ class CargoCleaner {
14
+ constructor() {
15
+ this.name = "cargo";
16
+ this.type = "package-manager";
17
+ this.description = "Rust Cargo registry and git caches with optional workspace target outputs";
18
+ }
19
+ async buildCategories() {
20
+ const home = os_1.default.homedir();
21
+ const categories = [
22
+ {
23
+ id: "registry",
24
+ name: "Registry cache",
25
+ description: "Cached crates index and downloads",
26
+ paths: [path_1.default.join(home, ".cargo", "registry")],
27
+ priority: "normal",
28
+ useCase: "development",
29
+ },
30
+ {
31
+ id: "git",
32
+ name: "Git checkouts",
33
+ description: "Cached Cargo git dependencies",
34
+ paths: [path_1.default.join(home, ".cargo", "git")],
35
+ priority: "normal",
36
+ useCase: "development",
37
+ },
38
+ ];
39
+ const targetPath = path_1.default.join(process.cwd(), "target");
40
+ categories.push({
41
+ id: "target",
42
+ name: "Workspace targets",
43
+ description: "Project build artifacts (opt-in)",
44
+ paths: [targetPath],
45
+ priority: "important",
46
+ useCase: "development",
47
+ isProjectSpecific: true,
48
+ projectPath: process.cwd(),
49
+ });
50
+ const existing = [];
51
+ for (const category of categories) {
52
+ const existingPaths = [];
53
+ for (const cachePath of category.paths) {
54
+ if (await (0, fs_2.pathExists)(cachePath)) {
55
+ existingPaths.push(cachePath);
56
+ }
57
+ }
58
+ if (existingPaths.length > 0) {
59
+ existing.push({ ...category, paths: existingPaths });
60
+ }
61
+ }
62
+ return existing;
63
+ }
64
+ async isAvailable() {
65
+ try {
66
+ await (0, execa_1.default)("cargo", ["--version"]);
67
+ return true;
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ }
73
+ async getCacheInfo() {
74
+ const categories = await this.buildCategories();
75
+ let totalSize = 0;
76
+ let lastModified;
77
+ for (const category of categories) {
78
+ let size = 0;
79
+ for (const cachePath of category.paths) {
80
+ size += await (0, fs_2.getDirectorySize)(cachePath, category.id !== "registry");
81
+ try {
82
+ const stats = await fs_1.promises.stat(cachePath);
83
+ if (!lastModified || stats.mtime > lastModified) {
84
+ lastModified = stats.mtime;
85
+ }
86
+ }
87
+ catch {
88
+ // ignore stat failures
89
+ }
90
+ }
91
+ category.size = size;
92
+ totalSize += size;
93
+ }
94
+ return {
95
+ name: this.name,
96
+ type: this.type,
97
+ description: this.description,
98
+ paths: categories.flatMap((c) => c.paths),
99
+ isInstalled: await this.isAvailable(),
100
+ size: totalSize,
101
+ lastModified,
102
+ categories,
103
+ };
104
+ }
105
+ async clearSelected(categories, dryRun, protectedPaths, cacheInfo) {
106
+ const pathsToClear = Array.from(new Set(categories.flatMap((c) => c.paths)));
107
+ const sizeBefore = cacheInfo?.size ??
108
+ categories.reduce((sum, cat) => sum + (cat.size ?? 0), 0);
109
+ if (pathsToClear.length === 0) {
110
+ return {
111
+ name: this.name,
112
+ success: true,
113
+ clearedPaths: [],
114
+ sizeBefore: 0,
115
+ sizeAfter: 0,
116
+ };
117
+ }
118
+ if (dryRun) {
119
+ (0, cli_1.printVerbose)(`[DRY RUN] Would clear cargo caches: ${pathsToClear.join(", ")}`);
120
+ return {
121
+ name: this.name,
122
+ success: true,
123
+ clearedPaths: pathsToClear,
124
+ sizeBefore,
125
+ sizeAfter: sizeBefore,
126
+ clearedCategories: categories.map((c) => c.id),
127
+ };
128
+ }
129
+ const clearedPaths = [];
130
+ let success = true;
131
+ let error;
132
+ for (const cachePath of pathsToClear) {
133
+ const isProtected = protectedPaths.some((pattern) => (0, minimatch_1.minimatch)(cachePath, pattern, { dot: true }));
134
+ if (isProtected) {
135
+ (0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
136
+ continue;
137
+ }
138
+ try {
139
+ if (await (0, fs_2.pathExists)(cachePath)) {
140
+ (0, cli_1.printVerbose)(`Clearing cargo cache at ${cachePath}`);
141
+ await (0, fs_2.safeRmrf)(cachePath);
142
+ clearedPaths.push(cachePath);
143
+ }
144
+ }
145
+ catch (err) {
146
+ success = false;
147
+ error = `Failed to clear ${cachePath}: ${err}`;
148
+ }
149
+ }
150
+ return {
151
+ name: this.name,
152
+ success,
153
+ error,
154
+ clearedPaths,
155
+ clearedCategories: categories.map((c) => c.id),
156
+ sizeBefore,
157
+ sizeAfter: success ? 0 : sizeBefore,
158
+ };
159
+ }
160
+ async clear(dryRun = false, _criteria, cacheInfo, protectedPaths = []) {
161
+ const info = cacheInfo || (await this.getCacheInfo());
162
+ if (!info.isInstalled) {
163
+ return {
164
+ name: this.name,
165
+ success: false,
166
+ error: "cargo is not installed",
167
+ clearedPaths: [],
168
+ sizeBefore: 0,
169
+ sizeAfter: 0,
170
+ };
171
+ }
172
+ const categories = info.categories || [];
173
+ const defaultCategories = categories.filter((c) => c.id !== "target");
174
+ return this.clearSelected(defaultCategories, dryRun, protectedPaths, info);
175
+ }
176
+ async clearByCategory(categoryIds, dryRun = false, cacheInfo, protectedPaths = []) {
177
+ const info = cacheInfo || (await this.getCacheInfo());
178
+ if (!info.isInstalled) {
179
+ return {
180
+ name: this.name,
181
+ success: false,
182
+ error: "cargo is not installed",
183
+ clearedPaths: [],
184
+ sizeBefore: 0,
185
+ sizeAfter: 0,
186
+ };
187
+ }
188
+ const categories = info.categories?.filter((c) => categoryIds.includes(c.id)) ?? [];
189
+ return this.clearSelected(categories, dryRun, protectedPaths, info);
190
+ }
191
+ }
192
+ exports.default = new CargoCleaner();
193
+ //# sourceMappingURL=cargo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cargo.js","sourceRoot":"","sources":["../../src/cleaners/cargo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { CacheInfo, CacheSelectionCriteria, ClearResult, CleanerModule } from "../types";
2
+ declare class CocoaPodsCleaner implements CleanerModule {
3
+ name: string;
4
+ type: "package-manager";
5
+ description: string;
6
+ private getCachePaths;
7
+ private buildCategories;
8
+ isAvailable(): Promise<boolean>;
9
+ getCacheInfo(): Promise<CacheInfo>;
10
+ private clearCategories;
11
+ clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
12
+ clearByCategory(categoryIds: string[], dryRun?: boolean, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
13
+ }
14
+ declare const _default: CocoaPodsCleaner;
15
+ export default _default;
16
+ //# sourceMappingURL=cocoapods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cocoapods.d.ts","sourceRoot":"","sources":["../../src/cleaners/cocoapods.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,SAAS,EACT,sBAAsB,EACtB,WAAW,EACX,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,cAAM,gBAAiB,YAAW,aAAa;IAC7C,IAAI,SAAe;IACnB,IAAI,EAAG,iBAAiB,CAAU;IAClC,WAAW,SAAmC;IAE9C,OAAO,CAAC,aAAa;YAKP,eAAe;IA2BvB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAY/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;YAkC1B,eAAe;IAwEvB,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,WAAW,CAAC;IAgBjB,eAAe,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,WAAW,CAAC;CAgBxB;;AAED,wBAAsC"}
@@ -0,0 +1,180 @@
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 path_1 = __importDefault(require("path"));
7
+ const os_1 = __importDefault(require("os"));
8
+ const execa_1 = __importDefault(require("execa"));
9
+ const fs_1 = require("fs");
10
+ const fs_2 = require("../utils/fs");
11
+ const cli_1 = require("../utils/cli");
12
+ const minimatch_1 = require("minimatch");
13
+ class CocoaPodsCleaner {
14
+ constructor() {
15
+ this.name = "cocoapods";
16
+ this.type = "package-manager";
17
+ this.description = "CocoaPods caches (macOS only)";
18
+ }
19
+ getCachePaths() {
20
+ const home = os_1.default.homedir();
21
+ return [path_1.default.join(home, "Library", "Caches", "CocoaPods")];
22
+ }
23
+ async buildCategories() {
24
+ const categories = [
25
+ {
26
+ id: "cache",
27
+ name: "CocoaPods cache",
28
+ description: "Pod downloads and specs cache",
29
+ paths: this.getCachePaths(),
30
+ priority: "normal",
31
+ useCase: "development",
32
+ },
33
+ ];
34
+ const existing = [];
35
+ for (const category of categories) {
36
+ const validPaths = [];
37
+ for (const cachePath of category.paths) {
38
+ if (await (0, fs_2.pathExists)(cachePath)) {
39
+ validPaths.push(cachePath);
40
+ }
41
+ }
42
+ if (validPaths.length > 0) {
43
+ existing.push({ ...category, paths: validPaths });
44
+ }
45
+ }
46
+ return existing;
47
+ }
48
+ async isAvailable() {
49
+ if (process.platform !== "darwin")
50
+ return false;
51
+ try {
52
+ await (0, execa_1.default)("pod", ["--version"]);
53
+ return true;
54
+ }
55
+ catch {
56
+ // Still consider available if caches exist even without CLI
57
+ const categories = await this.buildCategories();
58
+ return categories.length > 0;
59
+ }
60
+ }
61
+ async getCacheInfo() {
62
+ const categories = await this.buildCategories();
63
+ let totalSize = 0;
64
+ let lastModified;
65
+ for (const category of categories) {
66
+ let size = 0;
67
+ for (const cachePath of category.paths) {
68
+ size += await (0, fs_2.getDirectorySize)(cachePath, true);
69
+ try {
70
+ const stats = await fs_1.promises.stat(cachePath);
71
+ if (!lastModified || stats.mtime > lastModified) {
72
+ lastModified = stats.mtime;
73
+ }
74
+ }
75
+ catch {
76
+ // ignore
77
+ }
78
+ }
79
+ category.size = size;
80
+ totalSize += size;
81
+ }
82
+ return {
83
+ name: this.name,
84
+ type: this.type,
85
+ description: this.description,
86
+ paths: categories.flatMap((c) => c.paths),
87
+ isInstalled: await this.isAvailable(),
88
+ size: totalSize,
89
+ lastModified,
90
+ categories,
91
+ };
92
+ }
93
+ async clearCategories(categories, dryRun, protectedPaths, cacheInfo) {
94
+ const pathsToClear = Array.from(new Set(categories.flatMap((c) => c.paths)));
95
+ const sizeBefore = cacheInfo?.size ??
96
+ categories.reduce((sum, cat) => sum + (cat.size ?? 0), 0);
97
+ if (pathsToClear.length === 0) {
98
+ return {
99
+ name: this.name,
100
+ success: true,
101
+ clearedPaths: [],
102
+ sizeBefore: 0,
103
+ sizeAfter: 0,
104
+ };
105
+ }
106
+ if (dryRun) {
107
+ (0, cli_1.printVerbose)(`[DRY RUN] Would clear CocoaPods cache: ${pathsToClear.join(", ")}`);
108
+ return {
109
+ name: this.name,
110
+ success: true,
111
+ clearedPaths: pathsToClear,
112
+ clearedCategories: categories.map((c) => c.id),
113
+ sizeBefore,
114
+ sizeAfter: sizeBefore,
115
+ };
116
+ }
117
+ const clearedPaths = [];
118
+ let success = true;
119
+ let error;
120
+ for (const cachePath of pathsToClear) {
121
+ const isProtected = protectedPaths.some((pattern) => (0, minimatch_1.minimatch)(cachePath, pattern, { dot: true }));
122
+ if (isProtected) {
123
+ (0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
124
+ continue;
125
+ }
126
+ try {
127
+ if (await (0, fs_2.pathExists)(cachePath)) {
128
+ (0, cli_1.printVerbose)(`Clearing CocoaPods cache at ${cachePath}`);
129
+ await (0, fs_2.safeRmrf)(cachePath);
130
+ clearedPaths.push(cachePath);
131
+ }
132
+ }
133
+ catch (err) {
134
+ success = false;
135
+ error = `Failed to clear ${cachePath}: ${err}`;
136
+ }
137
+ }
138
+ return {
139
+ name: this.name,
140
+ success,
141
+ error,
142
+ clearedPaths,
143
+ clearedCategories: categories.map((c) => c.id),
144
+ sizeBefore,
145
+ sizeAfter: success ? 0 : sizeBefore,
146
+ };
147
+ }
148
+ async clear(dryRun = false, _criteria, cacheInfo, protectedPaths = []) {
149
+ const info = cacheInfo || (await this.getCacheInfo());
150
+ if (!info.isInstalled) {
151
+ return {
152
+ name: this.name,
153
+ success: false,
154
+ error: "cocoapods is not installed or not supported on this platform",
155
+ clearedPaths: [],
156
+ sizeBefore: 0,
157
+ sizeAfter: 0,
158
+ };
159
+ }
160
+ const categories = info.categories || [];
161
+ return this.clearCategories(categories, dryRun, protectedPaths, info);
162
+ }
163
+ async clearByCategory(categoryIds, dryRun = false, cacheInfo, protectedPaths = []) {
164
+ const info = cacheInfo || (await this.getCacheInfo());
165
+ if (!info.isInstalled) {
166
+ return {
167
+ name: this.name,
168
+ success: false,
169
+ error: "cocoapods is not installed or not supported on this platform",
170
+ clearedPaths: [],
171
+ sizeBefore: 0,
172
+ sizeAfter: 0,
173
+ };
174
+ }
175
+ const categories = info.categories?.filter((c) => categoryIds.includes(c.id)) ?? [];
176
+ return this.clearCategories(categories, dryRun, protectedPaths, info);
177
+ }
178
+ }
179
+ exports.default = new CocoaPodsCleaner();
180
+ //# sourceMappingURL=cocoapods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cocoapods.js","sourceRoot":"","sources":["../../src/cleaners/cocoapods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { CacheInfo, CacheSelectionCriteria, ClearResult, CleanerModule } from "../types";
2
+ declare class MavenCleaner implements CleanerModule {
3
+ name: string;
4
+ type: "build-tool";
5
+ description: string;
6
+ private buildCategories;
7
+ isAvailable(): Promise<boolean>;
8
+ getCacheInfo(): Promise<CacheInfo>;
9
+ private clearCategories;
10
+ clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
11
+ clearByCategory(categoryIds: string[], dryRun?: boolean, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
12
+ }
13
+ declare const _default: MavenCleaner;
14
+ export default _default;
15
+ //# sourceMappingURL=maven.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maven.d.ts","sourceRoot":"","sources":["../../src/cleaners/maven.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,SAAS,EACT,sBAAsB,EACtB,WAAW,EACX,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,cAAM,YAAa,YAAW,aAAa;IACzC,IAAI,SAAW;IACf,IAAI,EAAG,YAAY,CAAU;IAC7B,WAAW,SAA6D;YAE1D,eAAe;IAqCvB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;YAkC1B,eAAe;IAwEvB,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,WAAW,CAAC;IAgBjB,eAAe,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,WAAW,CAAC;CAgBxB;;AAED,wBAAkC"}
@@ -0,0 +1,182 @@
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 path_1 = __importDefault(require("path"));
7
+ const os_1 = __importDefault(require("os"));
8
+ const execa_1 = __importDefault(require("execa"));
9
+ const fs_1 = require("fs");
10
+ const fs_2 = require("../utils/fs");
11
+ const cli_1 = require("../utils/cli");
12
+ const minimatch_1 = require("minimatch");
13
+ class MavenCleaner {
14
+ constructor() {
15
+ this.name = "maven";
16
+ this.type = "build-tool";
17
+ this.description = "Apache Maven local repository and wrapper distributions";
18
+ }
19
+ async buildCategories() {
20
+ const home = os_1.default.homedir();
21
+ const base = path_1.default.join(home, ".m2");
22
+ const candidates = [
23
+ {
24
+ id: "repository",
25
+ name: "Local repository",
26
+ description: "Downloaded Maven artifacts",
27
+ paths: [path_1.default.join(base, "repository")],
28
+ priority: "normal",
29
+ useCase: "development",
30
+ },
31
+ {
32
+ id: "wrapper",
33
+ name: "Wrapper distributions",
34
+ description: "Maven wrapper downloaded distributions",
35
+ paths: [path_1.default.join(base, "wrapper", "dists")],
36
+ priority: "normal",
37
+ useCase: "development",
38
+ },
39
+ ];
40
+ const existing = [];
41
+ for (const category of candidates) {
42
+ const validPaths = [];
43
+ for (const cachePath of category.paths) {
44
+ if (await (0, fs_2.pathExists)(cachePath)) {
45
+ validPaths.push(cachePath);
46
+ }
47
+ }
48
+ if (validPaths.length > 0) {
49
+ existing.push({ ...category, paths: validPaths });
50
+ }
51
+ }
52
+ return existing;
53
+ }
54
+ async isAvailable() {
55
+ try {
56
+ await (0, execa_1.default)("mvn", ["-v"]);
57
+ return true;
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ async getCacheInfo() {
64
+ const categories = await this.buildCategories();
65
+ let totalSize = 0;
66
+ let lastModified;
67
+ for (const category of categories) {
68
+ let size = 0;
69
+ for (const cachePath of category.paths) {
70
+ size += await (0, fs_2.getDirectorySize)(cachePath, true);
71
+ try {
72
+ const stats = await fs_1.promises.stat(cachePath);
73
+ if (!lastModified || stats.mtime > lastModified) {
74
+ lastModified = stats.mtime;
75
+ }
76
+ }
77
+ catch {
78
+ // ignore errors
79
+ }
80
+ }
81
+ category.size = size;
82
+ totalSize += size;
83
+ }
84
+ return {
85
+ name: this.name,
86
+ type: this.type,
87
+ description: this.description,
88
+ paths: categories.flatMap((c) => c.paths),
89
+ isInstalled: await this.isAvailable(),
90
+ size: totalSize,
91
+ lastModified,
92
+ categories,
93
+ };
94
+ }
95
+ async clearCategories(categories, dryRun, protectedPaths, cacheInfo) {
96
+ const pathsToClear = Array.from(new Set(categories.flatMap((c) => c.paths)));
97
+ const sizeBefore = cacheInfo?.size ??
98
+ categories.reduce((sum, cat) => sum + (cat.size ?? 0), 0);
99
+ if (pathsToClear.length === 0) {
100
+ return {
101
+ name: this.name,
102
+ success: true,
103
+ clearedPaths: [],
104
+ sizeBefore: 0,
105
+ sizeAfter: 0,
106
+ };
107
+ }
108
+ if (dryRun) {
109
+ (0, cli_1.printVerbose)(`[DRY RUN] Would clear maven caches: ${pathsToClear.join(", ")}`);
110
+ return {
111
+ name: this.name,
112
+ success: true,
113
+ clearedPaths: pathsToClear,
114
+ clearedCategories: categories.map((c) => c.id),
115
+ sizeBefore,
116
+ sizeAfter: sizeBefore,
117
+ };
118
+ }
119
+ const clearedPaths = [];
120
+ let success = true;
121
+ let error;
122
+ for (const cachePath of pathsToClear) {
123
+ const isProtected = protectedPaths.some((pattern) => (0, minimatch_1.minimatch)(cachePath, pattern, { dot: true }));
124
+ if (isProtected) {
125
+ (0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
126
+ continue;
127
+ }
128
+ try {
129
+ if (await (0, fs_2.pathExists)(cachePath)) {
130
+ (0, cli_1.printVerbose)(`Clearing maven cache at ${cachePath}`);
131
+ await (0, fs_2.safeRmrf)(cachePath);
132
+ clearedPaths.push(cachePath);
133
+ }
134
+ }
135
+ catch (err) {
136
+ success = false;
137
+ error = `Failed to clear ${cachePath}: ${err}`;
138
+ }
139
+ }
140
+ return {
141
+ name: this.name,
142
+ success,
143
+ error,
144
+ clearedPaths,
145
+ clearedCategories: categories.map((c) => c.id),
146
+ sizeBefore,
147
+ sizeAfter: success ? 0 : sizeBefore,
148
+ };
149
+ }
150
+ async clear(dryRun = false, _criteria, cacheInfo, protectedPaths = []) {
151
+ const info = cacheInfo || (await this.getCacheInfo());
152
+ if (!info.isInstalled) {
153
+ return {
154
+ name: this.name,
155
+ success: false,
156
+ error: "maven is not installed",
157
+ clearedPaths: [],
158
+ sizeBefore: 0,
159
+ sizeAfter: 0,
160
+ };
161
+ }
162
+ const categories = info.categories || [];
163
+ return this.clearCategories(categories, dryRun, protectedPaths, info);
164
+ }
165
+ async clearByCategory(categoryIds, dryRun = false, cacheInfo, protectedPaths = []) {
166
+ const info = cacheInfo || (await this.getCacheInfo());
167
+ if (!info.isInstalled) {
168
+ return {
169
+ name: this.name,
170
+ success: false,
171
+ error: "maven is not installed",
172
+ clearedPaths: [],
173
+ sizeBefore: 0,
174
+ sizeAfter: 0,
175
+ };
176
+ }
177
+ const categories = info.categories?.filter((c) => categoryIds.includes(c.id)) ?? [];
178
+ return this.clearCategories(categories, dryRun, protectedPaths, info);
179
+ }
180
+ }
181
+ exports.default = new MavenCleaner();
182
+ //# sourceMappingURL=maven.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maven.js","sourceRoot":"","sources":["../../src/cleaners/maven.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { CacheInfo, CacheSelectionCriteria, ClearResult, CleanerModule } from "../types";
2
+ declare class NugetCleaner implements CleanerModule {
3
+ name: string;
4
+ type: "package-manager";
5
+ description: string;
6
+ private getCachePaths;
7
+ private buildCategories;
8
+ isAvailable(): Promise<boolean>;
9
+ getCacheInfo(): Promise<CacheInfo>;
10
+ private clearCategories;
11
+ clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
12
+ clearByCategory(categoryIds: string[], dryRun?: boolean, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
13
+ }
14
+ declare const _default: NugetCleaner;
15
+ export default _default;
16
+ //# sourceMappingURL=nuget.d.ts.map