squeaky-clean 0.1.7 → 0.1.10
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/package.json +25 -23
- package/dist/cleaners/BaseCleaner.d.ts +0 -57
- package/dist/cleaners/BaseCleaner.d.ts.map +0 -1
- package/dist/cleaners/BaseCleaner.js +0 -299
- package/dist/cleaners/BaseCleaner.js.map +0 -1
- package/dist/cleaners/CleanerRegistry.d.ts +0 -65
- package/dist/cleaners/CleanerRegistry.d.ts.map +0 -1
- package/dist/cleaners/CleanerRegistry.js +0 -112
- package/dist/cleaners/CleanerRegistry.js.map +0 -1
- package/dist/cleaners/androidstudio.d.ts +0 -16
- package/dist/cleaners/androidstudio.d.ts.map +0 -1
- package/dist/cleaners/androidstudio.js +0 -375
- package/dist/cleaners/androidstudio.js.map +0 -1
- package/dist/cleaners/brew.d.ts +0 -4
- package/dist/cleaners/brew.d.ts.map +0 -1
- package/dist/cleaners/brew.js +0 -197
- package/dist/cleaners/brew.js.map +0 -1
- package/dist/cleaners/brewEnhanced.d.ts +0 -18
- package/dist/cleaners/brewEnhanced.d.ts.map +0 -1
- package/dist/cleaners/brewEnhanced.js +0 -255
- package/dist/cleaners/brewEnhanced.js.map +0 -1
- package/dist/cleaners/bun.d.ts +0 -14
- package/dist/cleaners/bun.d.ts.map +0 -1
- package/dist/cleaners/bun.js +0 -207
- package/dist/cleaners/bun.js.map +0 -1
- package/dist/cleaners/cargo.d.ts +0 -15
- package/dist/cleaners/cargo.d.ts.map +0 -1
- package/dist/cleaners/cargo.js +0 -193
- package/dist/cleaners/cargo.js.map +0 -1
- package/dist/cleaners/chrome.d.ts +0 -14
- package/dist/cleaners/chrome.d.ts.map +0 -1
- package/dist/cleaners/chrome.js +0 -250
- package/dist/cleaners/chrome.js.map +0 -1
- package/dist/cleaners/cocoapods.d.ts +0 -16
- package/dist/cleaners/cocoapods.d.ts.map +0 -1
- package/dist/cleaners/cocoapods.js +0 -180
- package/dist/cleaners/cocoapods.js.map +0 -1
- package/dist/cleaners/docker.d.ts +0 -35
- package/dist/cleaners/docker.d.ts.map +0 -1
- package/dist/cleaners/docker.js +0 -285
- package/dist/cleaners/docker.js.map +0 -1
- package/dist/cleaners/firefox.d.ts +0 -15
- package/dist/cleaners/firefox.d.ts.map +0 -1
- package/dist/cleaners/firefox.js +0 -281
- package/dist/cleaners/firefox.js.map +0 -1
- package/dist/cleaners/flutter.d.ts +0 -18
- package/dist/cleaners/flutter.d.ts.map +0 -1
- package/dist/cleaners/flutter.js +0 -354
- package/dist/cleaners/flutter.js.map +0 -1
- package/dist/cleaners/goBuild.d.ts +0 -18
- package/dist/cleaners/goBuild.d.ts.map +0 -1
- package/dist/cleaners/goBuild.js +0 -196
- package/dist/cleaners/goBuild.js.map +0 -1
- package/dist/cleaners/gradle.d.ts +0 -14
- package/dist/cleaners/gradle.d.ts.map +0 -1
- package/dist/cleaners/gradle.js +0 -336
- package/dist/cleaners/gradle.js.map +0 -1
- package/dist/cleaners/index.d.ts +0 -51
- package/dist/cleaners/index.d.ts.map +0 -1
- package/dist/cleaners/index.js +0 -247
- package/dist/cleaners/index.js.map +0 -1
- package/dist/cleaners/jetbrains.d.ts +0 -18
- package/dist/cleaners/jetbrains.d.ts.map +0 -1
- package/dist/cleaners/jetbrains.js +0 -441
- package/dist/cleaners/jetbrains.js.map +0 -1
- package/dist/cleaners/maven.d.ts +0 -15
- package/dist/cleaners/maven.d.ts.map +0 -1
- package/dist/cleaners/maven.js +0 -182
- package/dist/cleaners/maven.js.map +0 -1
- package/dist/cleaners/nix.d.ts +0 -4
- package/dist/cleaners/nix.d.ts.map +0 -1
- package/dist/cleaners/nix.js +0 -227
- package/dist/cleaners/nix.js.map +0 -1
- package/dist/cleaners/nodeGyp.d.ts +0 -14
- package/dist/cleaners/nodeGyp.d.ts.map +0 -1
- package/dist/cleaners/nodeGyp.js +0 -157
- package/dist/cleaners/nodeGyp.js.map +0 -1
- package/dist/cleaners/npm.d.ts +0 -14
- package/dist/cleaners/npm.d.ts.map +0 -1
- package/dist/cleaners/npm.js +0 -198
- package/dist/cleaners/npm.js.map +0 -1
- package/dist/cleaners/npmEnhanced.d.ts +0 -19
- package/dist/cleaners/npmEnhanced.d.ts.map +0 -1
- package/dist/cleaners/npmEnhanced.js +0 -336
- package/dist/cleaners/npmEnhanced.js.map +0 -1
- package/dist/cleaners/nuget.d.ts +0 -16
- package/dist/cleaners/nuget.d.ts.map +0 -1
- package/dist/cleaners/nuget.js +0 -197
- package/dist/cleaners/nuget.js.map +0 -1
- package/dist/cleaners/nx.d.ts +0 -18
- package/dist/cleaners/nx.d.ts.map +0 -1
- package/dist/cleaners/nx.js +0 -308
- package/dist/cleaners/nx.js.map +0 -1
- package/dist/cleaners/pip.d.ts +0 -19
- package/dist/cleaners/pip.d.ts.map +0 -1
- package/dist/cleaners/pip.js +0 -334
- package/dist/cleaners/pip.js.map +0 -1
- package/dist/cleaners/pipenv.d.ts +0 -16
- package/dist/cleaners/pipenv.d.ts.map +0 -1
- package/dist/cleaners/pipenv.js +0 -184
- package/dist/cleaners/pipenv.js.map +0 -1
- package/dist/cleaners/pnpm.d.ts +0 -14
- package/dist/cleaners/pnpm.d.ts.map +0 -1
- package/dist/cleaners/pnpm.js +0 -209
- package/dist/cleaners/pnpm.js.map +0 -1
- package/dist/cleaners/poetry.d.ts +0 -16
- package/dist/cleaners/poetry.d.ts.map +0 -1
- package/dist/cleaners/poetry.js +0 -184
- package/dist/cleaners/poetry.js.map +0 -1
- package/dist/cleaners/swiftpm.d.ts +0 -16
- package/dist/cleaners/swiftpm.d.ts.map +0 -1
- package/dist/cleaners/swiftpm.js +0 -179
- package/dist/cleaners/swiftpm.js.map +0 -1
- package/dist/cleaners/turbo.d.ts +0 -18
- package/dist/cleaners/turbo.d.ts.map +0 -1
- package/dist/cleaners/turbo.js +0 -325
- package/dist/cleaners/turbo.js.map +0 -1
- package/dist/cleaners/vite.d.ts +0 -17
- package/dist/cleaners/vite.d.ts.map +0 -1
- package/dist/cleaners/vite.js +0 -274
- package/dist/cleaners/vite.js.map +0 -1
- package/dist/cleaners/vscode.d.ts +0 -14
- package/dist/cleaners/vscode.d.ts.map +0 -1
- package/dist/cleaners/vscode.js +0 -354
- package/dist/cleaners/vscode.js.map +0 -1
- package/dist/cleaners/webpack.d.ts +0 -17
- package/dist/cleaners/webpack.d.ts.map +0 -1
- package/dist/cleaners/webpack.js +0 -263
- package/dist/cleaners/webpack.js.map +0 -1
- package/dist/cleaners/xcode.d.ts +0 -14
- package/dist/cleaners/xcode.d.ts.map +0 -1
- package/dist/cleaners/xcode.js +0 -348
- package/dist/cleaners/xcode.js.map +0 -1
- package/dist/cleaners/yarn.d.ts +0 -16
- package/dist/cleaners/yarn.d.ts.map +0 -1
- package/dist/cleaners/yarn.js +0 -266
- package/dist/cleaners/yarn.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -346
- package/dist/cli.js.map +0 -1
- package/dist/commands/auto.d.ts +0 -8
- package/dist/commands/auto.d.ts.map +0 -1
- package/dist/commands/auto.js +0 -224
- package/dist/commands/auto.js.map +0 -1
- package/dist/commands/categories.d.ts +0 -8
- package/dist/commands/categories.d.ts.map +0 -1
- package/dist/commands/categories.js +0 -133
- package/dist/commands/categories.js.map +0 -1
- package/dist/commands/clean.d.ts +0 -3
- package/dist/commands/clean.d.ts.map +0 -1
- package/dist/commands/clean.js +0 -149
- package/dist/commands/clean.js.map +0 -1
- package/dist/commands/config.d.ts +0 -14
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -445
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/configDoctor.d.ts +0 -26
- package/dist/commands/configDoctor.d.ts.map +0 -1
- package/dist/commands/configDoctor.js +0 -60
- package/dist/commands/configDoctor.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -141
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/emojis.d.ts +0 -2
- package/dist/commands/emojis.d.ts.map +0 -1
- package/dist/commands/emojis.js +0 -28
- package/dist/commands/emojis.js.map +0 -1
- package/dist/commands/interactive.d.ts +0 -3
- package/dist/commands/interactive.d.ts.map +0 -1
- package/dist/commands/interactive.js +0 -284
- package/dist/commands/interactive.js.map +0 -1
- package/dist/commands/interactiveEnhanced.d.ts +0 -4
- package/dist/commands/interactiveEnhanced.d.ts.map +0 -1
- package/dist/commands/interactiveEnhanced.js +0 -460
- package/dist/commands/interactiveEnhanced.js.map +0 -1
- package/dist/commands/list.d.ts +0 -2
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -68
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/sizes.d.ts +0 -2
- package/dist/commands/sizes.d.ts.map +0 -1
- package/dist/commands/sizes.js +0 -87
- package/dist/commands/sizes.js.map +0 -1
- package/dist/config/index.d.ts +0 -31
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -241
- package/dist/config/index.js.map +0 -1
- package/dist/config/loadConfig.d.ts +0 -7
- package/dist/config/loadConfig.d.ts.map +0 -1
- package/dist/config/loadConfig.js +0 -103
- package/dist/config/loadConfig.js.map +0 -1
- package/dist/config/migrateConfig.d.ts +0 -56
- package/dist/config/migrateConfig.d.ts.map +0 -1
- package/dist/config/migrateConfig.js +0 -102
- package/dist/config/migrateConfig.js.map +0 -1
- package/dist/plugins/discovery.d.ts +0 -6
- package/dist/plugins/discovery.d.ts.map +0 -1
- package/dist/plugins/discovery.js +0 -64
- package/dist/plugins/discovery.js.map +0 -1
- package/dist/profiles/index.d.ts +0 -61
- package/dist/profiles/index.d.ts.map +0 -1
- package/dist/profiles/index.js +0 -361
- package/dist/profiles/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -161
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/utils/cli.d.ts +0 -44
- package/dist/utils/cli.d.ts.map +0 -1
- package/dist/utils/cli.js +0 -410
- package/dist/utils/cli.js.map +0 -1
- package/dist/utils/fs.d.ts +0 -15
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js +0 -218
- package/dist/utils/fs.js.map +0 -1
package/dist/cleaners/xcode.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { CacheInfo, ClearResult, CleanerModule, CacheSelectionCriteria } from "../types";
|
|
2
|
-
export declare class XcodeCleaner implements CleanerModule {
|
|
3
|
-
name: string;
|
|
4
|
-
type: "ide";
|
|
5
|
-
description: string;
|
|
6
|
-
private getCachePaths;
|
|
7
|
-
isAvailable(): Promise<boolean>;
|
|
8
|
-
getCacheInfo(): Promise<CacheInfo>;
|
|
9
|
-
clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo): Promise<ClearResult>;
|
|
10
|
-
static create(): XcodeCleaner;
|
|
11
|
-
}
|
|
12
|
-
declare const _default: XcodeCleaner;
|
|
13
|
-
export default _default;
|
|
14
|
-
//# sourceMappingURL=xcode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xcode.d.ts","sourceRoot":"","sources":["../../src/cleaners/xcode.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAIlB,qBAAa,YAAa,YAAW,aAAa;IAChD,IAAI,SAAW;IACf,IAAI,EAAG,KAAK,CAAU;IACtB,WAAW,SACmE;IAE9E,OAAO,CAAC,aAAa;IA2Hf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAgC/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IA2DlC,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,WAAW,CAAC;IAkKvB,MAAM,CAAC,MAAM,IAAI,YAAY;CAG9B;;AAGD,wBAAqC"}
|
package/dist/cleaners/xcode.js
DELETED
|
@@ -1,348 +0,0 @@
|
|
|
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.XcodeCleaner = 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
|
-
class XcodeCleaner {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.name = "xcode";
|
|
16
|
-
this.type = "ide";
|
|
17
|
-
this.description = "Xcode cache, derived data, archives, simulators, and device support files";
|
|
18
|
-
}
|
|
19
|
-
getCachePaths() {
|
|
20
|
-
const homeDir = os_1.default.homedir();
|
|
21
|
-
const libraryDir = path_1.default.join(homeDir, "Library");
|
|
22
|
-
return [
|
|
23
|
-
// Derived Data - biggest cache culprit (builds, indexes, logs)
|
|
24
|
-
{
|
|
25
|
-
path: path_1.default.join(libraryDir, "Developer", "Xcode", "DerivedData"),
|
|
26
|
-
description: "Build outputs, indexes, and intermediate files",
|
|
27
|
-
category: "Derived Data",
|
|
28
|
-
},
|
|
29
|
-
// Archives - can be large but may contain important builds
|
|
30
|
-
{
|
|
31
|
-
path: path_1.default.join(libraryDir, "Developer", "Xcode", "Archives"),
|
|
32
|
-
description: "App archives and distribution builds",
|
|
33
|
-
category: "Archives",
|
|
34
|
-
},
|
|
35
|
-
// Device Support - accumulates over time with new iOS versions
|
|
36
|
-
{
|
|
37
|
-
path: path_1.default.join(libraryDir, "Developer", "Xcode", "iOS DeviceSupport"),
|
|
38
|
-
description: "iOS device debugging symbols and support files",
|
|
39
|
-
category: "Device Support",
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
path: path_1.default.join(libraryDir, "Developer", "Xcode", "watchOS DeviceSupport"),
|
|
43
|
-
description: "watchOS device debugging symbols",
|
|
44
|
-
category: "Device Support",
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
path: path_1.default.join(libraryDir, "Developer", "Xcode", "tvOS DeviceSupport"),
|
|
48
|
-
description: "tvOS device debugging symbols",
|
|
49
|
-
category: "Device Support",
|
|
50
|
-
},
|
|
51
|
-
// Core Simulator caches
|
|
52
|
-
{
|
|
53
|
-
path: path_1.default.join(libraryDir, "Developer", "CoreSimulator", "Caches"),
|
|
54
|
-
description: "iOS Simulator cache files",
|
|
55
|
-
category: "Simulators",
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
path: path_1.default.join(libraryDir, "Developer", "CoreSimulator", "Logs"),
|
|
59
|
-
description: "iOS Simulator log files",
|
|
60
|
-
category: "Simulators",
|
|
61
|
-
},
|
|
62
|
-
// Xcode caches and temporary files
|
|
63
|
-
{
|
|
64
|
-
path: path_1.default.join(libraryDir, "Caches", "com.apple.dt.Xcode"),
|
|
65
|
-
description: "Xcode application cache",
|
|
66
|
-
category: "App Cache",
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
path: path_1.default.join(libraryDir, "Caches", "com.apple.dt.XCTest-device"),
|
|
70
|
-
description: "XCTest device cache",
|
|
71
|
-
category: "Testing",
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
path: path_1.default.join(libraryDir, "Caches", "com.apple.dt.XCTest-simulator"),
|
|
75
|
-
description: "XCTest simulator cache",
|
|
76
|
-
category: "Testing",
|
|
77
|
-
},
|
|
78
|
-
// Documentation and help caches
|
|
79
|
-
{
|
|
80
|
-
path: path_1.default.join(libraryDir, "Caches", "com.apple.helpd"),
|
|
81
|
-
description: "Xcode documentation cache",
|
|
82
|
-
category: "Documentation",
|
|
83
|
-
},
|
|
84
|
-
// Provisioning profiles cache
|
|
85
|
-
{
|
|
86
|
-
path: path_1.default.join(libraryDir, "MobileDevice", "Provisioning Profiles"),
|
|
87
|
-
description: "Cached provisioning profiles",
|
|
88
|
-
category: "Provisioning",
|
|
89
|
-
},
|
|
90
|
-
// Swift package manager cache (if using SPM)
|
|
91
|
-
{
|
|
92
|
-
path: path_1.default.join(libraryDir, "Caches", "org.swift.swiftpm"),
|
|
93
|
-
description: "Swift Package Manager cache",
|
|
94
|
-
category: "Package Manager",
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
path: path_1.default.join(libraryDir, "org.swift.swiftpm"),
|
|
98
|
-
description: "Swift Package Manager data",
|
|
99
|
-
category: "Package Manager",
|
|
100
|
-
},
|
|
101
|
-
// CocoaPods cache (if using CocoaPods)
|
|
102
|
-
{
|
|
103
|
-
path: path_1.default.join(libraryDir, "Caches", "CocoaPods"),
|
|
104
|
-
description: "CocoaPods cache files",
|
|
105
|
-
category: "Package Manager",
|
|
106
|
-
},
|
|
107
|
-
// Instruments and profiling
|
|
108
|
-
{
|
|
109
|
-
path: path_1.default.join(libraryDir, "Application Support", "Instruments"),
|
|
110
|
-
description: "Instruments profiling data",
|
|
111
|
-
category: "Profiling",
|
|
112
|
-
},
|
|
113
|
-
// Old simulator devices (can be huge)
|
|
114
|
-
{
|
|
115
|
-
path: path_1.default.join(libraryDir, "Developer", "CoreSimulator", "Devices"),
|
|
116
|
-
description: "iOS Simulator device data (⚠️ Contains app data)",
|
|
117
|
-
category: "Simulators",
|
|
118
|
-
},
|
|
119
|
-
];
|
|
120
|
-
}
|
|
121
|
-
async isAvailable() {
|
|
122
|
-
try {
|
|
123
|
-
(0, cli_1.printVerbose)("Checking if Xcode is installed...");
|
|
124
|
-
// Check for Xcode installation
|
|
125
|
-
const xcodeAppPaths = [
|
|
126
|
-
"/Applications/Xcode.app",
|
|
127
|
-
"/Applications/Xcode-beta.app",
|
|
128
|
-
];
|
|
129
|
-
for (const xcodePath of xcodeAppPaths) {
|
|
130
|
-
if (await (0, fs_2.pathExists)(xcodePath)) {
|
|
131
|
-
(0, cli_1.printVerbose)(`Found Xcode at ${xcodePath}`);
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// Also check for command line tools
|
|
136
|
-
try {
|
|
137
|
-
await (0, execa_1.default)("xcode-select", ["--print-path"]);
|
|
138
|
-
(0, cli_1.printVerbose)("Found Xcode command line tools");
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
// Neither GUI Xcode nor command line tools found
|
|
143
|
-
}
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
catch {
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
async getCacheInfo() {
|
|
151
|
-
const allPaths = this.getCachePaths();
|
|
152
|
-
const existingPaths = [];
|
|
153
|
-
let totalSize = 0;
|
|
154
|
-
let lastModified;
|
|
155
|
-
const categories = new Map();
|
|
156
|
-
(0, cli_1.printVerbose)(`Checking ${allPaths.length} Xcode cache locations...`);
|
|
157
|
-
for (const { path: cachePath, description, category } of allPaths) {
|
|
158
|
-
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
159
|
-
existingPaths.push(cachePath);
|
|
160
|
-
try {
|
|
161
|
-
const size = await (0, fs_2.getDirectorySize)(cachePath);
|
|
162
|
-
totalSize += size;
|
|
163
|
-
// Track by category
|
|
164
|
-
const existing = categories.get(category) || { size: 0, count: 0 };
|
|
165
|
-
categories.set(category, {
|
|
166
|
-
size: existing.size + size,
|
|
167
|
-
count: existing.count + 1,
|
|
168
|
-
});
|
|
169
|
-
const stats = await fs_1.promises.stat(cachePath);
|
|
170
|
-
if (!lastModified || stats.mtime > lastModified) {
|
|
171
|
-
lastModified = stats.mtime;
|
|
172
|
-
}
|
|
173
|
-
const sizeInMB = (size / (1024 * 1024)).toFixed(1);
|
|
174
|
-
(0, cli_1.printVerbose)(`Found ${category}: ${cachePath} (${sizeInMB} MB) - ${description}`);
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
(0, cli_1.printVerbose)(`Error checking ${cachePath}: ${error}`);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
// Log category summary
|
|
182
|
-
if (categories.size > 0) {
|
|
183
|
-
(0, cli_1.printVerbose)("=== Xcode Cache Summary by Category ===");
|
|
184
|
-
categories.forEach((info, category) => {
|
|
185
|
-
const sizeInMB = (info.size / (1024 * 1024)).toFixed(1);
|
|
186
|
-
(0, cli_1.printVerbose)(`${category}: ${info.count} locations, ${sizeInMB} MB`);
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
return {
|
|
190
|
-
name: this.name,
|
|
191
|
-
type: this.type,
|
|
192
|
-
description: this.description,
|
|
193
|
-
paths: existingPaths,
|
|
194
|
-
isInstalled: await this.isAvailable(),
|
|
195
|
-
size: totalSize,
|
|
196
|
-
lastModified,
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
async clear(dryRun = false, _criteria, cacheInfo) {
|
|
200
|
-
const info = cacheInfo || (await this.getCacheInfo());
|
|
201
|
-
const clearedPaths = [];
|
|
202
|
-
const sizeBefore = info.size || 0;
|
|
203
|
-
let success = true;
|
|
204
|
-
let error;
|
|
205
|
-
if (!info.isInstalled) {
|
|
206
|
-
return {
|
|
207
|
-
name: this.name,
|
|
208
|
-
success: false,
|
|
209
|
-
error: "Xcode is not installed",
|
|
210
|
-
clearedPaths: [],
|
|
211
|
-
sizeBefore: 0,
|
|
212
|
-
sizeAfter: 0,
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
if (info.paths.length === 0) {
|
|
216
|
-
(0, cli_1.printVerbose)("No Xcode cache directories found");
|
|
217
|
-
return {
|
|
218
|
-
name: this.name,
|
|
219
|
-
success: true,
|
|
220
|
-
clearedPaths: [],
|
|
221
|
-
sizeBefore: 0,
|
|
222
|
-
sizeAfter: 0,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
try {
|
|
226
|
-
if (dryRun) {
|
|
227
|
-
(0, cli_1.printVerbose)(`[DRY RUN] Would clear ${info.paths.length} Xcode cache locations:`);
|
|
228
|
-
const pathsWithInfo = this.getCachePaths();
|
|
229
|
-
for (const cachePath of info.paths) {
|
|
230
|
-
const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
|
|
231
|
-
(0, cli_1.printVerbose)(` • ${pathInfo?.category || "Unknown"}: ${cachePath}`);
|
|
232
|
-
if (pathInfo?.description) {
|
|
233
|
-
(0, cli_1.printVerbose)(` ${pathInfo.description}`);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
return {
|
|
237
|
-
name: this.name,
|
|
238
|
-
success: true,
|
|
239
|
-
sizeBefore,
|
|
240
|
-
sizeAfter: sizeBefore,
|
|
241
|
-
clearedPaths: info.paths,
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
const pathsWithInfo = this.getCachePaths();
|
|
245
|
-
// Clear caches by category priority (safest first)
|
|
246
|
-
const priorityOrder = [
|
|
247
|
-
"App Cache",
|
|
248
|
-
"Testing",
|
|
249
|
-
"Documentation",
|
|
250
|
-
"Profiling",
|
|
251
|
-
"Package Manager",
|
|
252
|
-
"Derived Data",
|
|
253
|
-
"Simulators",
|
|
254
|
-
"Device Support",
|
|
255
|
-
"Provisioning",
|
|
256
|
-
"Archives", // Most careful with archives as they may contain important builds
|
|
257
|
-
];
|
|
258
|
-
const categorizedPaths = new Map();
|
|
259
|
-
for (const cachePath of info.paths) {
|
|
260
|
-
const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
|
|
261
|
-
const category = pathInfo?.category || "Other";
|
|
262
|
-
if (!categorizedPaths.has(category)) {
|
|
263
|
-
categorizedPaths.set(category, []);
|
|
264
|
-
}
|
|
265
|
-
categorizedPaths.get(category).push(cachePath);
|
|
266
|
-
}
|
|
267
|
-
// Clear in priority order
|
|
268
|
-
for (const category of priorityOrder) {
|
|
269
|
-
const paths = categorizedPaths.get(category);
|
|
270
|
-
if (!paths)
|
|
271
|
-
continue;
|
|
272
|
-
(0, cli_1.printVerbose)(`Clearing ${category} caches...`);
|
|
273
|
-
for (const cachePath of paths) {
|
|
274
|
-
try {
|
|
275
|
-
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
276
|
-
const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
|
|
277
|
-
// Special handling for simulator devices - more cautious
|
|
278
|
-
if (category === "Simulators" && cachePath.includes("Devices")) {
|
|
279
|
-
(0, cli_1.printVerbose)(`Cautiously clearing simulator device data: ${cachePath}`);
|
|
280
|
-
// Could add more specific logic here to preserve certain simulators
|
|
281
|
-
}
|
|
282
|
-
(0, cli_1.printVerbose)(`Clearing ${category}: ${cachePath}`);
|
|
283
|
-
if (pathInfo?.description) {
|
|
284
|
-
(0, cli_1.printVerbose)(` Purpose: ${pathInfo.description}`);
|
|
285
|
-
}
|
|
286
|
-
await (0, fs_2.safeRmrf)(cachePath);
|
|
287
|
-
clearedPaths.push(cachePath);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
catch (pathError) {
|
|
291
|
-
(0, cli_1.printVerbose)(`Failed to clear ${cachePath}: ${pathError}`);
|
|
292
|
-
success = false;
|
|
293
|
-
if (!error) {
|
|
294
|
-
error = `Failed to clear some Xcode cache directories: ${pathError}`;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
// Handle any remaining uncategorized paths
|
|
300
|
-
const remainingPaths = info.paths.filter((p) => !clearedPaths.includes(p));
|
|
301
|
-
for (const cachePath of remainingPaths) {
|
|
302
|
-
try {
|
|
303
|
-
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
304
|
-
(0, cli_1.printVerbose)(`Clearing remaining cache: ${cachePath}`);
|
|
305
|
-
await (0, fs_2.safeRmrf)(cachePath);
|
|
306
|
-
clearedPaths.push(cachePath);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
catch (pathError) {
|
|
310
|
-
(0, cli_1.printVerbose)(`Failed to clear ${cachePath}: ${pathError}`);
|
|
311
|
-
success = false;
|
|
312
|
-
if (!error) {
|
|
313
|
-
error = `Failed to clear some cache directories: ${pathError}`;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
if (sizeBefore > 0) {
|
|
318
|
-
(0, cli_1.printVerbose)(`Freed space from Xcode cache data`);
|
|
319
|
-
}
|
|
320
|
-
return {
|
|
321
|
-
name: this.name,
|
|
322
|
-
success,
|
|
323
|
-
sizeBefore,
|
|
324
|
-
sizeAfter: 0, // Set to 0 as we don't want to rescan
|
|
325
|
-
error,
|
|
326
|
-
clearedPaths,
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
catch (clearError) {
|
|
330
|
-
return {
|
|
331
|
-
name: this.name,
|
|
332
|
-
success: false,
|
|
333
|
-
sizeBefore,
|
|
334
|
-
sizeAfter: sizeBefore,
|
|
335
|
-
error: clearError instanceof Error ? clearError.message : String(clearError),
|
|
336
|
-
clearedPaths,
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
// Static method to create instance
|
|
341
|
-
static create() {
|
|
342
|
-
return new XcodeCleaner();
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
exports.XcodeCleaner = XcodeCleaner;
|
|
346
|
-
// Export default instance
|
|
347
|
-
exports.default = XcodeCleaner.create();
|
|
348
|
-
//# sourceMappingURL=xcode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xcode.js","sourceRoot":"","sources":["../../src/cleaners/xcode.ts"],"names":[],"mappings":"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"}
|
package/dist/cleaners/yarn.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { CleanerModule, CacheInfo, ClearResult, CacheSelectionCriteria } from "../types";
|
|
2
|
-
declare class YarnCleaner implements CleanerModule {
|
|
3
|
-
name: string;
|
|
4
|
-
type: "package-manager";
|
|
5
|
-
description: string;
|
|
6
|
-
private getYarnVersion;
|
|
7
|
-
private getYarnCachePaths;
|
|
8
|
-
private findProjectYarnCaches;
|
|
9
|
-
private findYarnProjectsRecursively;
|
|
10
|
-
isAvailable(): Promise<boolean>;
|
|
11
|
-
getCacheInfo(): Promise<CacheInfo>;
|
|
12
|
-
clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo): Promise<ClearResult>;
|
|
13
|
-
}
|
|
14
|
-
declare const _default: YarnCleaner;
|
|
15
|
-
export default _default;
|
|
16
|
-
//# sourceMappingURL=yarn.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yarn.d.ts","sourceRoot":"","sources":["../../src/cleaners/yarn.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,WAAW,EACX,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAQlB,cAAM,WAAY,YAAW,aAAa;IACxC,IAAI,SAAU;IACd,IAAI,EAAG,iBAAiB,CAAU;IAClC,WAAW,SAAkD;YAE/C,cAAc;YASd,iBAAiB;YAsCjB,qBAAqB;YAoDrB,2BAA2B;IA6DnC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAyClC,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,WAAW,CAAC;CAsDxB;;AAED,wBAAiC"}
|
package/dist/cleaners/yarn.js
DELETED
|
@@ -1,266 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const fs_1 = require("fs");
|
|
40
|
-
const path = __importStar(require("path"));
|
|
41
|
-
const os = __importStar(require("os"));
|
|
42
|
-
const fs_2 = require("../utils/fs");
|
|
43
|
-
const execa_1 = __importDefault(require("execa"));
|
|
44
|
-
const cli_1 = require("../utils/cli");
|
|
45
|
-
class YarnCleaner {
|
|
46
|
-
constructor() {
|
|
47
|
-
this.name = "yarn";
|
|
48
|
-
this.type = "package-manager";
|
|
49
|
-
this.description = "Yarn package manager caches and global store";
|
|
50
|
-
}
|
|
51
|
-
async getYarnVersion() {
|
|
52
|
-
try {
|
|
53
|
-
const result = await (0, execa_1.default)("yarn", ["--version"]);
|
|
54
|
-
return result.stdout.trim();
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
async getYarnCachePaths() {
|
|
61
|
-
const paths = [];
|
|
62
|
-
try {
|
|
63
|
-
// Get yarn cache directory
|
|
64
|
-
const cacheResult = await (0, execa_1.default)("yarn", ["cache", "dir"]);
|
|
65
|
-
const cacheDir = cacheResult.stdout.trim();
|
|
66
|
-
if (await (0, fs_2.pathExists)(cacheDir)) {
|
|
67
|
-
paths.push(cacheDir);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
// Fallback to default yarn cache locations
|
|
72
|
-
const homeDir = os.homedir();
|
|
73
|
-
const defaultPaths = [
|
|
74
|
-
path.join(homeDir, ".yarn", "cache"),
|
|
75
|
-
path.join(homeDir, ".cache", "yarn"),
|
|
76
|
-
path.join(homeDir, "Library", "Caches", "Yarn"), // macOS
|
|
77
|
-
];
|
|
78
|
-
for (const cachePath of defaultPaths) {
|
|
79
|
-
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
80
|
-
paths.push(cachePath);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// Look for project-specific yarn caches
|
|
85
|
-
try {
|
|
86
|
-
// Yarn v2+ .yarn/cache directories in projects
|
|
87
|
-
const projectCaches = await this.findProjectYarnCaches();
|
|
88
|
-
paths.push(...projectCaches);
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
(0, cli_1.printVerbose)(`Error finding project yarn caches: ${error}`);
|
|
92
|
-
}
|
|
93
|
-
return [...new Set(paths)]; // Remove duplicates
|
|
94
|
-
}
|
|
95
|
-
async findProjectYarnCaches() {
|
|
96
|
-
const projectCaches = [];
|
|
97
|
-
const homeDir = os.homedir();
|
|
98
|
-
// Only search current directory and immediate common dev dirs to avoid performance issues
|
|
99
|
-
const searchDirs = [
|
|
100
|
-
process.cwd(), // Current directory
|
|
101
|
-
path.join(homeDir, "Projects"), // Only if it exists and isn't huge
|
|
102
|
-
path.join(homeDir, "Development"),
|
|
103
|
-
path.join(homeDir, "dev"),
|
|
104
|
-
];
|
|
105
|
-
// Add timeout to prevent hanging
|
|
106
|
-
const searchTimeout = 5000; // 5 seconds max for project search
|
|
107
|
-
const startTime = Date.now();
|
|
108
|
-
for (const searchDir of searchDirs) {
|
|
109
|
-
// Check timeout before each directory
|
|
110
|
-
if (Date.now() - startTime > searchTimeout) {
|
|
111
|
-
(0, cli_1.printVerbose)("Project cache search timed out, skipping remaining directories");
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
if (await (0, fs_2.pathExists)(searchDir)) {
|
|
115
|
-
try {
|
|
116
|
-
// Only search 1 level deep to avoid performance issues
|
|
117
|
-
const projects = await this.findYarnProjectsRecursively(searchDir, 1, startTime, searchTimeout);
|
|
118
|
-
projectCaches.push(...projects);
|
|
119
|
-
// Limit total project caches found to prevent excessive scanning
|
|
120
|
-
if (projectCaches.length > 50) {
|
|
121
|
-
(0, cli_1.printVerbose)("Found many project caches, limiting search to prevent performance issues");
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
(0, cli_1.printVerbose)(`Error searching ${searchDir}: ${error}`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return projectCaches;
|
|
131
|
-
}
|
|
132
|
-
async findYarnProjectsRecursively(dir, maxDepth, startTime = Date.now(), timeout = 5000) {
|
|
133
|
-
if (maxDepth <= 0)
|
|
134
|
-
return [];
|
|
135
|
-
// Check timeout
|
|
136
|
-
if (Date.now() - startTime > timeout) {
|
|
137
|
-
(0, cli_1.printVerbose)(`Yarn project search timed out at ${dir}`);
|
|
138
|
-
return [];
|
|
139
|
-
}
|
|
140
|
-
const yarnCaches = [];
|
|
141
|
-
try {
|
|
142
|
-
const entries = await fs_1.promises.readdir(dir, { withFileTypes: true });
|
|
143
|
-
// Limit number of entries to check to prevent excessive scanning
|
|
144
|
-
const limitedEntries = entries.slice(0, 100); // Only check first 100 entries
|
|
145
|
-
for (const entry of limitedEntries) {
|
|
146
|
-
// Check timeout during iteration
|
|
147
|
-
if (Date.now() - startTime > timeout) {
|
|
148
|
-
(0, cli_1.printVerbose)(`Yarn project search timed out during scan of ${dir}`);
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
if (entry.isDirectory() &&
|
|
152
|
-
!entry.name.startsWith(".") &&
|
|
153
|
-
entry.name !== "node_modules") {
|
|
154
|
-
const fullPath = path.join(dir, entry.name);
|
|
155
|
-
// Check for .yarn/cache directory (Yarn v2+)
|
|
156
|
-
const yarnCacheDir = path.join(fullPath, ".yarn", "cache");
|
|
157
|
-
if (await (0, fs_2.pathExists)(yarnCacheDir)) {
|
|
158
|
-
yarnCaches.push(yarnCacheDir);
|
|
159
|
-
}
|
|
160
|
-
// Recursively search subdirectories only if we have time
|
|
161
|
-
if (Date.now() - startTime < timeout) {
|
|
162
|
-
const subCaches = await this.findYarnProjectsRecursively(fullPath, maxDepth - 1, startTime, timeout);
|
|
163
|
-
yarnCaches.push(...subCaches);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
// Ignore permission errors or other issues
|
|
170
|
-
}
|
|
171
|
-
return yarnCaches;
|
|
172
|
-
}
|
|
173
|
-
async isAvailable() {
|
|
174
|
-
const version = await this.getYarnVersion();
|
|
175
|
-
return version !== null;
|
|
176
|
-
}
|
|
177
|
-
async getCacheInfo() {
|
|
178
|
-
const isInstalled = await this.isAvailable();
|
|
179
|
-
if (!isInstalled) {
|
|
180
|
-
return {
|
|
181
|
-
name: this.name,
|
|
182
|
-
type: this.type,
|
|
183
|
-
description: this.description,
|
|
184
|
-
paths: [],
|
|
185
|
-
isInstalled: false,
|
|
186
|
-
size: 0,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
const cachePaths = await this.getYarnCachePaths();
|
|
190
|
-
let totalSize = 0;
|
|
191
|
-
const validPaths = [];
|
|
192
|
-
for (const cachePath of cachePaths) {
|
|
193
|
-
try {
|
|
194
|
-
const size = await (0, fs_2.getDirectorySize)(cachePath);
|
|
195
|
-
totalSize += size;
|
|
196
|
-
validPaths.push(cachePath);
|
|
197
|
-
(0, cli_1.printVerbose)(`${cli_1.symbols.folder} ${cachePath}: ${(size / (1024 * 1024)).toFixed(1)} MB`);
|
|
198
|
-
}
|
|
199
|
-
catch (error) {
|
|
200
|
-
(0, cli_1.printVerbose)(`Error calculating size for ${cachePath}: ${error}`);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return {
|
|
204
|
-
name: this.name,
|
|
205
|
-
type: this.type,
|
|
206
|
-
description: this.description,
|
|
207
|
-
paths: validPaths,
|
|
208
|
-
isInstalled: true,
|
|
209
|
-
size: totalSize,
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
async clear(dryRun = false, _criteria, cacheInfo) {
|
|
213
|
-
const info = cacheInfo || (await this.getCacheInfo());
|
|
214
|
-
if (!info.isInstalled) {
|
|
215
|
-
return {
|
|
216
|
-
name: this.name,
|
|
217
|
-
success: false,
|
|
218
|
-
error: "Yarn is not installed",
|
|
219
|
-
clearedPaths: [],
|
|
220
|
-
sizeBefore: 0,
|
|
221
|
-
sizeAfter: 0,
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
const sizeBefore = info.size || 0;
|
|
225
|
-
const clearedPaths = [];
|
|
226
|
-
let errors = [];
|
|
227
|
-
for (const cachePath of info.paths) {
|
|
228
|
-
try {
|
|
229
|
-
if (dryRun) {
|
|
230
|
-
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Would clear: ${cachePath}`);
|
|
231
|
-
clearedPaths.push(cachePath);
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Clearing: ${cachePath}`);
|
|
235
|
-
await (0, fs_2.safeRmrf)(cachePath);
|
|
236
|
-
clearedPaths.push(cachePath);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
catch (error) {
|
|
240
|
-
const errorMsg = `Failed to clear ${cachePath}: ${error}`;
|
|
241
|
-
errors.push(errorMsg);
|
|
242
|
-
(0, cli_1.printVerbose)(errorMsg);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
// Try to clear yarn cache using yarn command as well
|
|
246
|
-
if (!dryRun && (await this.isAvailable())) {
|
|
247
|
-
try {
|
|
248
|
-
await (0, execa_1.default)("yarn", ["cache", "clean"]);
|
|
249
|
-
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Executed: yarn cache clean`);
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
(0, cli_1.printVerbose)(`Note: yarn cache clean failed: ${error}`);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
return {
|
|
256
|
-
name: this.name,
|
|
257
|
-
success: errors.length === 0,
|
|
258
|
-
sizeBefore,
|
|
259
|
-
sizeAfter: 0, // Set to 0 as we don't want to rescan
|
|
260
|
-
error: errors.length > 0 ? errors.join("; ") : undefined,
|
|
261
|
-
clearedPaths,
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
exports.default = new YarnCleaner();
|
|
266
|
-
//# sourceMappingURL=yarn.js.map
|