appclean 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish.yml +41 -0
- package/.github/workflows/test.yml +37 -0
- package/ACTION_CHECKLIST.md +342 -0
- package/APPCLEAN_SUMMARY.md +309 -0
- package/CHANGELOG.md +205 -0
- package/CODE_OF_CONDUCT.md +49 -0
- package/CODE_REVIEW_REPORT.md +447 -0
- package/COMMUNITY_POSTS.md +307 -0
- package/CONTRIBUTING.md +121 -0
- package/DEPLOYMENT_GUIDE.md +345 -0
- package/DEPLOYMENT_STATUS.md +182 -0
- package/EXECUTIVE_REPORT.md +393 -0
- package/GITHUB_OPTIMIZATION.md +383 -0
- package/INDEX.md +165 -0
- package/LICENSE +21 -0
- package/MARKETING_SUMMARY.md +352 -0
- package/NPM_PACKAGE_OPTIMIZATION.md +281 -0
- package/NPM_PUBLISH.md +116 -0
- package/PROJECT_SUMMARY.txt +249 -0
- package/QUICKSTART.md +219 -0
- package/README.md +548 -0
- package/SECURITY.md +104 -0
- package/SETUP_GITHUB.md +237 -0
- package/TESTING_SUMMARY.md +379 -0
- package/dist/core/appUpdateChecker.d.ts +23 -0
- package/dist/core/appUpdateChecker.d.ts.map +1 -0
- package/dist/core/appUpdateChecker.js +159 -0
- package/dist/core/appUpdateChecker.js.map +1 -0
- package/dist/core/detector.d.ts +13 -0
- package/dist/core/detector.d.ts.map +1 -0
- package/dist/core/detector.js +99 -0
- package/dist/core/detector.js.map +1 -0
- package/dist/core/duplicateFileFinder.d.ts +14 -0
- package/dist/core/duplicateFileFinder.d.ts.map +1 -0
- package/dist/core/duplicateFileFinder.js +80 -0
- package/dist/core/duplicateFileFinder.js.map +1 -0
- package/dist/core/orphanedDependencyDetector.d.ts +19 -0
- package/dist/core/orphanedDependencyDetector.d.ts.map +1 -0
- package/dist/core/orphanedDependencyDetector.js +148 -0
- package/dist/core/orphanedDependencyDetector.js.map +1 -0
- package/dist/core/performanceOptimizer.d.ts +37 -0
- package/dist/core/performanceOptimizer.d.ts.map +1 -0
- package/dist/core/performanceOptimizer.js +128 -0
- package/dist/core/performanceOptimizer.js.map +1 -0
- package/dist/core/permissionHandler.d.ts +9 -0
- package/dist/core/permissionHandler.d.ts.map +1 -0
- package/dist/core/permissionHandler.js +89 -0
- package/dist/core/permissionHandler.js.map +1 -0
- package/dist/core/pluginSystem.d.ts +39 -0
- package/dist/core/pluginSystem.d.ts.map +1 -0
- package/dist/core/pluginSystem.js +120 -0
- package/dist/core/pluginSystem.js.map +1 -0
- package/dist/core/removalRecorder.d.ts +32 -0
- package/dist/core/removalRecorder.d.ts.map +1 -0
- package/dist/core/removalRecorder.js +79 -0
- package/dist/core/removalRecorder.js.map +1 -0
- package/dist/core/remover.d.ts +15 -0
- package/dist/core/remover.d.ts.map +1 -0
- package/dist/core/remover.js +225 -0
- package/dist/core/remover.js.map +1 -0
- package/dist/core/reportGenerator.d.ts +9 -0
- package/dist/core/reportGenerator.d.ts.map +1 -0
- package/dist/core/reportGenerator.js +328 -0
- package/dist/core/reportGenerator.js.map +1 -0
- package/dist/core/scheduledCleanup.d.ts +38 -0
- package/dist/core/scheduledCleanup.d.ts.map +1 -0
- package/dist/core/scheduledCleanup.js +127 -0
- package/dist/core/scheduledCleanup.js.map +1 -0
- package/dist/core/serviceFileDetector.d.ts +18 -0
- package/dist/core/serviceFileDetector.d.ts.map +1 -0
- package/dist/core/serviceFileDetector.js +136 -0
- package/dist/core/serviceFileDetector.js.map +1 -0
- package/dist/core/verificationModule.d.ts +14 -0
- package/dist/core/verificationModule.d.ts.map +1 -0
- package/dist/core/verificationModule.js +102 -0
- package/dist/core/verificationModule.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +333 -0
- package/dist/index.js.map +1 -0
- package/dist/managers/brewManager.d.ts +10 -0
- package/dist/managers/brewManager.d.ts.map +1 -0
- package/dist/managers/brewManager.js +130 -0
- package/dist/managers/brewManager.js.map +1 -0
- package/dist/managers/customManager.d.ts +8 -0
- package/dist/managers/customManager.d.ts.map +1 -0
- package/dist/managers/customManager.js +139 -0
- package/dist/managers/customManager.js.map +1 -0
- package/dist/managers/linuxManager.d.ts +10 -0
- package/dist/managers/linuxManager.d.ts.map +1 -0
- package/dist/managers/linuxManager.js +191 -0
- package/dist/managers/linuxManager.js.map +1 -0
- package/dist/managers/npmManager.d.ts +10 -0
- package/dist/managers/npmManager.d.ts.map +1 -0
- package/dist/managers/npmManager.js +119 -0
- package/dist/managers/npmManager.js.map +1 -0
- package/dist/types/index.d.ts +44 -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/ui/guiServer.d.ts +10 -0
- package/dist/ui/guiServer.d.ts.map +1 -0
- package/dist/ui/guiServer.js +134 -0
- package/dist/ui/guiServer.js.map +1 -0
- package/dist/ui/menu.d.ts +6 -0
- package/dist/ui/menu.d.ts.map +1 -0
- package/dist/ui/menu.js +93 -0
- package/dist/ui/menu.js.map +1 -0
- package/dist/ui/prompts.d.ts +13 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +161 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/utils/filesystem.d.ts +13 -0
- package/dist/utils/filesystem.d.ts.map +1 -0
- package/dist/utils/filesystem.js +152 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +49 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/platform.d.ts +9 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +75 -0
- package/dist/utils/platform.js.map +1 -0
- package/jest.config.js +20 -0
- package/logo.svg +60 -0
- package/package.json +55 -0
- package/setup-github.sh +125 -0
- package/src/core/appUpdateChecker.ts +220 -0
- package/src/core/detector.ts +133 -0
- package/src/core/duplicateFileFinder.ts +113 -0
- package/src/core/orphanedDependencyDetector.ts +195 -0
- package/src/core/performanceOptimizer.ts +209 -0
- package/src/core/permissionHandler.ts +121 -0
- package/src/core/pluginSystem.ts +194 -0
- package/src/core/removalRecorder.ts +146 -0
- package/src/core/remover.ts +280 -0
- package/src/core/reportGenerator.ts +354 -0
- package/src/core/scheduledCleanup.ts +204 -0
- package/src/core/serviceFileDetector.ts +181 -0
- package/src/core/verificationModule.ts +140 -0
- package/src/index.ts +449 -0
- package/src/managers/brewManager.ts +149 -0
- package/src/managers/customManager.ts +167 -0
- package/src/managers/linuxManager.ts +210 -0
- package/src/managers/npmManager.ts +137 -0
- package/src/types/index.ts +59 -0
- package/src/ui/guiServer.ts +155 -0
- package/src/ui/menu.ts +100 -0
- package/src/ui/prompts.ts +177 -0
- package/src/utils/filesystem.ts +145 -0
- package/src/utils/logger.ts +48 -0
- package/src/utils/platform.ts +75 -0
- package/tsconfig.json +20 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const detector_1 = require("./core/detector");
|
|
11
|
+
const remover_1 = require("./core/remover");
|
|
12
|
+
const menu_1 = require("./ui/menu");
|
|
13
|
+
const prompts_1 = require("./ui/prompts");
|
|
14
|
+
const logger_1 = require("./utils/logger");
|
|
15
|
+
const VERSION = '1.8.0';
|
|
16
|
+
async function interactiveMode() {
|
|
17
|
+
(0, menu_1.showHeader)();
|
|
18
|
+
const detector = new detector_1.Detector();
|
|
19
|
+
let running = true;
|
|
20
|
+
while (running) {
|
|
21
|
+
const action = await (0, menu_1.showMainMenu)();
|
|
22
|
+
switch (action) {
|
|
23
|
+
case 'search': {
|
|
24
|
+
await handleSearch(detector);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
case 'list-all': {
|
|
28
|
+
await handleListAll(detector);
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
case 'help': {
|
|
32
|
+
(0, menu_1.showHelp)();
|
|
33
|
+
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
case 'exit': {
|
|
37
|
+
running = false;
|
|
38
|
+
logger_1.Logger.space();
|
|
39
|
+
logger_1.Logger.info('Goodbye!');
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async function handleSearch(detector) {
|
|
46
|
+
logger_1.Logger.space();
|
|
47
|
+
const query = await (0, prompts_1.promptSearchQuery)();
|
|
48
|
+
if (!query.trim()) {
|
|
49
|
+
logger_1.Logger.warn('Please enter a search query');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const spinner = (0, ora_1.default)('Searching for apps...').start();
|
|
53
|
+
try {
|
|
54
|
+
const results = await detector.searchApps({ query });
|
|
55
|
+
spinner.succeed(`Found ${results.length} app(s)`);
|
|
56
|
+
logger_1.Logger.space();
|
|
57
|
+
if (results.length === 0) {
|
|
58
|
+
logger_1.Logger.warn('No apps found matching your query');
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const selectedApp = await (0, prompts_1.promptSelectApp)(results);
|
|
62
|
+
if (!selectedApp) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
await handleAppSelected(selectedApp, detector);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
spinner.fail(error.message);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function handleListAll(detector) {
|
|
72
|
+
logger_1.Logger.space();
|
|
73
|
+
const filterMethod = await (0, prompts_1.promptInstallMethodFilter)();
|
|
74
|
+
const sortBy = await (0, prompts_1.promptSortBy)();
|
|
75
|
+
const spinner = (0, ora_1.default)('Scanning installed apps...').start();
|
|
76
|
+
try {
|
|
77
|
+
const apps = await detector.searchApps({
|
|
78
|
+
installMethod: filterMethod || undefined,
|
|
79
|
+
sortBy,
|
|
80
|
+
});
|
|
81
|
+
spinner.succeed(`Found ${apps.length} app(s)`);
|
|
82
|
+
logger_1.Logger.space();
|
|
83
|
+
if (apps.length === 0) {
|
|
84
|
+
logger_1.Logger.warn('No apps found');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const table = apps.map((app) => ({
|
|
88
|
+
Name: app.name,
|
|
89
|
+
Version: app.version,
|
|
90
|
+
Method: app.installMethod,
|
|
91
|
+
Size: app.size ? (0, logger_1.formatBytes)(app.size) : 'N/A',
|
|
92
|
+
}));
|
|
93
|
+
logger_1.Logger.table(table);
|
|
94
|
+
logger_1.Logger.space();
|
|
95
|
+
const selectedApp = await (0, prompts_1.promptSelectApp)(apps);
|
|
96
|
+
if (!selectedApp) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
await handleAppSelected(selectedApp, detector);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
spinner.fail(error.message);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async function handleAppSelected(app, detector) {
|
|
106
|
+
logger_1.Logger.space();
|
|
107
|
+
const action = await (0, menu_1.showAppMenu)();
|
|
108
|
+
switch (action) {
|
|
109
|
+
case 'details': {
|
|
110
|
+
const spinner = (0, ora_1.default)('Analyzing artifacts...').start();
|
|
111
|
+
try {
|
|
112
|
+
const artifacts = await detector.findArtifacts(app.name, app.installMethod);
|
|
113
|
+
spinner.succeed('Analysis complete');
|
|
114
|
+
(0, prompts_1.displayAppDetails)(app, artifacts);
|
|
115
|
+
logger_1.Logger.space();
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
spinner.fail(error.message);
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
case 'remove': {
|
|
123
|
+
await handleRemoveApp(app, detector);
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case 'back':
|
|
127
|
+
default:
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function handleRemoveApp(app, detector) {
|
|
132
|
+
const confirmed = await (0, prompts_1.promptConfirmRemoval)(app.name);
|
|
133
|
+
if (!confirmed) {
|
|
134
|
+
logger_1.Logger.info('Removal cancelled');
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const options = await (0, prompts_1.promptRemovalOptions)();
|
|
138
|
+
logger_1.Logger.space();
|
|
139
|
+
const spinner = (0, ora_1.default)('Analyzing artifacts...').start();
|
|
140
|
+
try {
|
|
141
|
+
const artifacts = await detector.findArtifacts(app.name, app.installMethod);
|
|
142
|
+
spinner.succeed('Analysis complete');
|
|
143
|
+
const remover = new remover_1.Remover();
|
|
144
|
+
if (options.dryRun) {
|
|
145
|
+
logger_1.Logger.info(`${chalk_1.default.bold('DRY RUN:')} Preview of files to be removed:`);
|
|
146
|
+
logger_1.Logger.space();
|
|
147
|
+
await remover.previewRemoval(artifacts);
|
|
148
|
+
logger_1.Logger.space();
|
|
149
|
+
logger_1.Logger.warn('This is a preview only. No files were removed.');
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const finalConfirm = await (0, prompts_1.promptFinalConfirmation)(app.name);
|
|
153
|
+
if (!finalConfirm) {
|
|
154
|
+
logger_1.Logger.info('Removal cancelled');
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const removeSpinner = (0, ora_1.default)('Removing app and artifacts...').start();
|
|
158
|
+
try {
|
|
159
|
+
const result = await remover.removeApp(app.name, app.installMethod, artifacts, {
|
|
160
|
+
createBackup: options.createBackup,
|
|
161
|
+
});
|
|
162
|
+
if (result.success) {
|
|
163
|
+
removeSpinner.succeed(`Successfully removed ${app.name} (freed ${(0, logger_1.formatBytes)(result.freedSpace)})`);
|
|
164
|
+
if (result.backupPath) {
|
|
165
|
+
logger_1.Logger.info(`Backup saved at: ${result.backupPath}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
removeSpinner.warn(`Removal completed with issues`);
|
|
170
|
+
if (result.errors && result.errors.length > 0) {
|
|
171
|
+
logger_1.Logger.warn('Errors:');
|
|
172
|
+
result.errors.forEach((error) => console.log(` • ${error}`));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
removeSpinner.fail(error.message);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
spinner.fail(error.message);
|
|
183
|
+
}
|
|
184
|
+
logger_1.Logger.space();
|
|
185
|
+
}
|
|
186
|
+
async function main() {
|
|
187
|
+
const program = new commander_1.Command();
|
|
188
|
+
program
|
|
189
|
+
.name('appclean')
|
|
190
|
+
.description('Intelligently find and remove applications with all their artifacts')
|
|
191
|
+
.version(VERSION);
|
|
192
|
+
program
|
|
193
|
+
.command('search [query]')
|
|
194
|
+
.description('Search for installed applications')
|
|
195
|
+
.action(async (query) => {
|
|
196
|
+
const detector = new detector_1.Detector();
|
|
197
|
+
const searchQuery = query || (await (0, prompts_1.promptSearchQuery)());
|
|
198
|
+
const spinner = (0, ora_1.default)('Searching for apps...').start();
|
|
199
|
+
try {
|
|
200
|
+
const results = await detector.searchApps({ query: searchQuery });
|
|
201
|
+
spinner.succeed(`Found ${results.length} app(s)`);
|
|
202
|
+
if (results.length === 0) {
|
|
203
|
+
logger_1.Logger.warn('No apps found');
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
logger_1.Logger.space();
|
|
207
|
+
const selectedApp = await (0, prompts_1.promptSelectApp)(results);
|
|
208
|
+
if (selectedApp) {
|
|
209
|
+
await handleAppSelected(selectedApp, detector);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
spinner.fail(error.message);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
program
|
|
217
|
+
.command('list')
|
|
218
|
+
.description('List all installed applications')
|
|
219
|
+
.action(async () => {
|
|
220
|
+
const detector = new detector_1.Detector();
|
|
221
|
+
const spinner = (0, ora_1.default)('Scanning installed apps...').start();
|
|
222
|
+
try {
|
|
223
|
+
const apps = await detector.searchApps({ sortBy: 'name' });
|
|
224
|
+
spinner.succeed(`Found ${apps.length} app(s)`);
|
|
225
|
+
if (apps.length === 0) {
|
|
226
|
+
logger_1.Logger.warn('No apps found');
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
logger_1.Logger.space();
|
|
230
|
+
const table = apps.map((app) => ({
|
|
231
|
+
Name: app.name,
|
|
232
|
+
Version: app.version,
|
|
233
|
+
Method: app.installMethod,
|
|
234
|
+
}));
|
|
235
|
+
logger_1.Logger.table(table);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
spinner.fail(error.message);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
program
|
|
242
|
+
.command('analyze <appName>')
|
|
243
|
+
.description('Analyze an application and show its artifacts')
|
|
244
|
+
.action(async (appName) => {
|
|
245
|
+
const detector = new detector_1.Detector();
|
|
246
|
+
const spinner = (0, ora_1.default)('Analyzing app...').start();
|
|
247
|
+
try {
|
|
248
|
+
const apps = await detector.searchApps({ query: appName });
|
|
249
|
+
if (apps.length === 0) {
|
|
250
|
+
spinner.fail('App not found');
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const app = apps[0];
|
|
254
|
+
const artifacts = await detector.findArtifacts(app.name, app.installMethod);
|
|
255
|
+
spinner.succeed('Analysis complete');
|
|
256
|
+
(0, prompts_1.displayAppDetails)(app, artifacts);
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
spinner.fail(error.message);
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
program
|
|
263
|
+
.command('remove <appName>')
|
|
264
|
+
.description('Remove an application')
|
|
265
|
+
.option('--dry-run', 'Preview without removing')
|
|
266
|
+
.option('--backup', 'Create backup before removal')
|
|
267
|
+
.option('--force', 'Skip confirmation prompts')
|
|
268
|
+
.action(async (appName, options) => {
|
|
269
|
+
const detector = new detector_1.Detector();
|
|
270
|
+
const spinner = (0, ora_1.default)('Searching for app...').start();
|
|
271
|
+
try {
|
|
272
|
+
const apps = await detector.searchApps({ query: appName });
|
|
273
|
+
if (apps.length === 0) {
|
|
274
|
+
spinner.fail('App not found');
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const app = apps[0];
|
|
278
|
+
spinner.text = 'Analyzing artifacts...';
|
|
279
|
+
const artifacts = await detector.findArtifacts(app.name, app.installMethod);
|
|
280
|
+
spinner.succeed('Analysis complete');
|
|
281
|
+
const remover = new remover_1.Remover();
|
|
282
|
+
logger_1.Logger.space();
|
|
283
|
+
logger_1.Logger.info(`App: ${chalk_1.default.cyan(app.name)}`);
|
|
284
|
+
logger_1.Logger.info(`Method: ${chalk_1.default.yellow(app.installMethod)}`);
|
|
285
|
+
logger_1.Logger.space();
|
|
286
|
+
if (options.dryRun) {
|
|
287
|
+
logger_1.Logger.info('DRY RUN - Preview of files to be removed:');
|
|
288
|
+
logger_1.Logger.space();
|
|
289
|
+
await remover.previewRemoval(artifacts);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
if (!options.force) {
|
|
293
|
+
const confirmed = await (0, prompts_1.promptFinalConfirmation)(app.name);
|
|
294
|
+
if (!confirmed) {
|
|
295
|
+
logger_1.Logger.info('Removal cancelled');
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
const removeSpinner = (0, ora_1.default)('Removing app...').start();
|
|
300
|
+
const result = await remover.removeApp(app.name, app.installMethod, artifacts, { createBackup: options.backup });
|
|
301
|
+
if (result.success) {
|
|
302
|
+
removeSpinner.succeed(`Removed ${app.name} (freed ${(0, logger_1.formatBytes)(result.freedSpace)})`);
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
removeSpinner.warn('Removal completed with errors');
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
spinner.fail(error.message);
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
program.on('command:*', () => {
|
|
314
|
+
if (process.argv.length < 3) {
|
|
315
|
+
interactiveMode().catch((error) => {
|
|
316
|
+
logger_1.Logger.error(error.message);
|
|
317
|
+
process.exit(1);
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
program.parse(process.argv);
|
|
322
|
+
if (process.argv.length < 3) {
|
|
323
|
+
interactiveMode().catch((error) => {
|
|
324
|
+
logger_1.Logger.error(error.message);
|
|
325
|
+
process.exit(1);
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
main().catch((error) => {
|
|
330
|
+
logger_1.Logger.error(error.message);
|
|
331
|
+
process.exit(1);
|
|
332
|
+
});
|
|
333
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { InstalledApp, ArtifactPath } from '../types';
|
|
2
|
+
export declare class BrewManager {
|
|
3
|
+
private brewPrefix;
|
|
4
|
+
constructor();
|
|
5
|
+
private getBrewPrefix;
|
|
6
|
+
getInstalledPackages(): Promise<InstalledApp[]>;
|
|
7
|
+
findArtifacts(appName: string): Promise<ArtifactPath[]>;
|
|
8
|
+
removePackage(appName: string): Promise<boolean>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=brewManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brewManager.d.ts","sourceRoot":"","sources":["../../src/managers/brewManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGtD,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAS;;IAM3B,OAAO,CAAC,aAAa;IAYf,oBAAoB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAwB/C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAyFvD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CASvD"}
|
|
@@ -0,0 +1,130 @@
|
|
|
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.BrewManager = void 0;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const platform_1 = require("../utils/platform");
|
|
10
|
+
const filesystem_1 = require("../utils/filesystem");
|
|
11
|
+
const logger_1 = require("../utils/logger");
|
|
12
|
+
class BrewManager {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.brewPrefix = this.getBrewPrefix();
|
|
15
|
+
}
|
|
16
|
+
getBrewPrefix() {
|
|
17
|
+
try {
|
|
18
|
+
return (0, child_process_1.execSync)('brew --prefix').toString().trim();
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
if (process.arch === 'arm64') {
|
|
22
|
+
return '/opt/homebrew';
|
|
23
|
+
}
|
|
24
|
+
return '/usr/local';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async getInstalledPackages() {
|
|
28
|
+
const packages = [];
|
|
29
|
+
try {
|
|
30
|
+
const output = (0, child_process_1.execSync)('brew list --json').toString();
|
|
31
|
+
const data = JSON.parse(output);
|
|
32
|
+
for (const pkg of data) {
|
|
33
|
+
const cellPath = path_1.default.join(this.brewPrefix, 'Cellar', pkg);
|
|
34
|
+
packages.push({
|
|
35
|
+
name: pkg,
|
|
36
|
+
version: 'unknown',
|
|
37
|
+
installMethod: 'brew',
|
|
38
|
+
mainPath: cellPath,
|
|
39
|
+
installedDate: undefined,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
logger_1.Logger.debug('Failed to get brew packages: ' + error.message);
|
|
45
|
+
}
|
|
46
|
+
return packages;
|
|
47
|
+
}
|
|
48
|
+
async findArtifacts(appName) {
|
|
49
|
+
const artifacts = [];
|
|
50
|
+
const home = (0, platform_1.getHomeDir)();
|
|
51
|
+
const cellarPath = path_1.default.join(this.brewPrefix, 'Cellar', appName);
|
|
52
|
+
if ((0, filesystem_1.pathExists)(cellarPath)) {
|
|
53
|
+
artifacts.push({
|
|
54
|
+
path: cellarPath,
|
|
55
|
+
type: 'other',
|
|
56
|
+
size: 0,
|
|
57
|
+
description: 'Cellar directory',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const binPath = path_1.default.join(this.brewPrefix, 'bin', appName);
|
|
61
|
+
if ((0, filesystem_1.pathExists)(binPath)) {
|
|
62
|
+
artifacts.push({
|
|
63
|
+
path: binPath,
|
|
64
|
+
type: 'binary',
|
|
65
|
+
size: 0,
|
|
66
|
+
description: 'Binary symlink',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
const manPath = path_1.default.join(this.brewPrefix, 'share', 'man', 'man1', `${appName}.1`);
|
|
70
|
+
if ((0, filesystem_1.pathExists)(manPath)) {
|
|
71
|
+
artifacts.push({
|
|
72
|
+
path: manPath,
|
|
73
|
+
type: 'data',
|
|
74
|
+
size: 0,
|
|
75
|
+
description: 'Man page',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const prefPath = path_1.default.join(home, 'Library', 'Preferences', `com.${appName}*`);
|
|
79
|
+
const prefDir = path_1.default.join(home, 'Library', 'Preferences');
|
|
80
|
+
if ((0, filesystem_1.pathExists)(prefDir)) {
|
|
81
|
+
const files = (0, filesystem_1.listDirectory)(prefDir);
|
|
82
|
+
for (const file of files) {
|
|
83
|
+
if (file.includes(appName)) {
|
|
84
|
+
artifacts.push({
|
|
85
|
+
path: path_1.default.join(prefDir, file),
|
|
86
|
+
type: 'config',
|
|
87
|
+
size: 0,
|
|
88
|
+
description: 'Preference file',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const appSupportPath = path_1.default.join(home, 'Library', 'Application Support', appName);
|
|
94
|
+
if ((0, filesystem_1.pathExists)(appSupportPath)) {
|
|
95
|
+
artifacts.push({
|
|
96
|
+
path: appSupportPath,
|
|
97
|
+
type: 'config',
|
|
98
|
+
size: 0,
|
|
99
|
+
description: 'Application support directory',
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const launchAgentsPath = path_1.default.join(home, 'Library', 'LaunchAgents');
|
|
103
|
+
if ((0, filesystem_1.pathExists)(launchAgentsPath)) {
|
|
104
|
+
const files = (0, filesystem_1.listDirectory)(launchAgentsPath);
|
|
105
|
+
for (const file of files) {
|
|
106
|
+
if (file.includes(appName)) {
|
|
107
|
+
artifacts.push({
|
|
108
|
+
path: path_1.default.join(launchAgentsPath, file),
|
|
109
|
+
type: 'service',
|
|
110
|
+
size: 0,
|
|
111
|
+
description: 'Launch agent',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return artifacts;
|
|
117
|
+
}
|
|
118
|
+
async removePackage(appName) {
|
|
119
|
+
try {
|
|
120
|
+
(0, child_process_1.execSync)(`brew uninstall ${appName}`);
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
logger_1.Logger.debug('Failed to uninstall brew package: ' + error.message);
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.BrewManager = BrewManager;
|
|
130
|
+
//# sourceMappingURL=brewManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brewManager.js","sourceRoot":"","sources":["../../src/managers/brewManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InstalledApp, ArtifactPath } from '../types';
|
|
2
|
+
export declare class CustomManager {
|
|
3
|
+
findCustomInstalledApps(): Promise<InstalledApp[]>;
|
|
4
|
+
private detectInstallMethod;
|
|
5
|
+
findArtifacts(appName: string): Promise<ArtifactPath[]>;
|
|
6
|
+
searchByName(query: string): Promise<string[]>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=customManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customManager.d.ts","sourceRoot":"","sources":["../../src/managers/customManager.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD,qBAAa,aAAa;IAClB,uBAAuB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YA0C1C,mBAAmB;IAwB3B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAkEvD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAuBrD"}
|
|
@@ -0,0 +1,139 @@
|
|
|
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.CustomManager = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const platform_1 = require("../utils/platform");
|
|
9
|
+
const filesystem_1 = require("../utils/filesystem");
|
|
10
|
+
class CustomManager {
|
|
11
|
+
async findCustomInstalledApps() {
|
|
12
|
+
const apps = [];
|
|
13
|
+
const home = (0, platform_1.getHomeDir)();
|
|
14
|
+
const customBinPaths = [
|
|
15
|
+
'/usr/local/bin',
|
|
16
|
+
'/usr/bin',
|
|
17
|
+
`${home}/.local/bin`,
|
|
18
|
+
];
|
|
19
|
+
const foundBinaries = new Set();
|
|
20
|
+
for (const binPath of customBinPaths) {
|
|
21
|
+
if (!(0, filesystem_1.pathExists)(binPath))
|
|
22
|
+
continue;
|
|
23
|
+
const binaries = (0, filesystem_1.listDirectory)(binPath);
|
|
24
|
+
for (const binary of binaries) {
|
|
25
|
+
const fullPath = path_1.default.join(binPath, binary);
|
|
26
|
+
if (foundBinaries.has(binary))
|
|
27
|
+
continue;
|
|
28
|
+
const method = await this.detectInstallMethod(fullPath);
|
|
29
|
+
if (method === 'custom') {
|
|
30
|
+
foundBinaries.add(binary);
|
|
31
|
+
apps.push({
|
|
32
|
+
name: binary,
|
|
33
|
+
version: 'unknown',
|
|
34
|
+
installMethod: 'custom',
|
|
35
|
+
mainPath: fullPath,
|
|
36
|
+
installedDate: undefined,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return apps;
|
|
42
|
+
}
|
|
43
|
+
async detectInstallMethod(binaryPath) {
|
|
44
|
+
try {
|
|
45
|
+
const content = (0, filesystem_1.readFile)(binaryPath);
|
|
46
|
+
if (!content)
|
|
47
|
+
return 'unknown';
|
|
48
|
+
if (content.includes('node') || content.includes('#!/usr/bin/env node')) {
|
|
49
|
+
return 'custom';
|
|
50
|
+
}
|
|
51
|
+
if (content.includes('python') || content.includes('#!/usr/bin/env python')) {
|
|
52
|
+
return 'custom';
|
|
53
|
+
}
|
|
54
|
+
if (content.startsWith('#!/bin/bash') || content.startsWith('#!/bin/sh')) {
|
|
55
|
+
return 'custom';
|
|
56
|
+
}
|
|
57
|
+
return 'custom';
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return 'unknown';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async findArtifacts(appName) {
|
|
64
|
+
const artifacts = [];
|
|
65
|
+
const home = (0, platform_1.getHomeDir)();
|
|
66
|
+
const binPaths = [
|
|
67
|
+
`/usr/local/bin/${appName}`,
|
|
68
|
+
`/usr/bin/${appName}`,
|
|
69
|
+
`${home}/.local/bin/${appName}`,
|
|
70
|
+
];
|
|
71
|
+
for (const binPath of binPaths) {
|
|
72
|
+
if ((0, filesystem_1.pathExists)(binPath)) {
|
|
73
|
+
artifacts.push({
|
|
74
|
+
path: binPath,
|
|
75
|
+
type: 'binary',
|
|
76
|
+
size: 0,
|
|
77
|
+
description: 'Custom binary',
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const configPatterns = [
|
|
82
|
+
path_1.default.join(home, `.config`, appName),
|
|
83
|
+
path_1.default.join(home, `.${appName}`),
|
|
84
|
+
path_1.default.join(home, `.${appName}rc`),
|
|
85
|
+
path_1.default.join(home, `.${appName}rc.json`),
|
|
86
|
+
];
|
|
87
|
+
for (const configPath of configPatterns) {
|
|
88
|
+
if ((0, filesystem_1.pathExists)(configPath)) {
|
|
89
|
+
artifacts.push({
|
|
90
|
+
path: configPath,
|
|
91
|
+
type: 'config',
|
|
92
|
+
size: 0,
|
|
93
|
+
description: 'Configuration',
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const dataPath = path_1.default.join(home, `.local`, `share`, appName);
|
|
98
|
+
if ((0, filesystem_1.pathExists)(dataPath)) {
|
|
99
|
+
artifacts.push({
|
|
100
|
+
path: dataPath,
|
|
101
|
+
type: 'data',
|
|
102
|
+
size: 0,
|
|
103
|
+
description: 'Data directory',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
const cachePath = path_1.default.join(home, `.cache`, appName);
|
|
107
|
+
if ((0, filesystem_1.pathExists)(cachePath)) {
|
|
108
|
+
artifacts.push({
|
|
109
|
+
path: cachePath,
|
|
110
|
+
type: 'cache',
|
|
111
|
+
size: 0,
|
|
112
|
+
description: 'Cache directory',
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return artifacts;
|
|
116
|
+
}
|
|
117
|
+
async searchByName(query) {
|
|
118
|
+
const results = [];
|
|
119
|
+
const home = (0, platform_1.getHomeDir)();
|
|
120
|
+
const binPaths = [
|
|
121
|
+
'/usr/local/bin',
|
|
122
|
+
'/usr/bin',
|
|
123
|
+
`${home}/.local/bin`,
|
|
124
|
+
];
|
|
125
|
+
for (const binPath of binPaths) {
|
|
126
|
+
if (!(0, filesystem_1.pathExists)(binPath))
|
|
127
|
+
continue;
|
|
128
|
+
const binaries = (0, filesystem_1.listDirectory)(binPath);
|
|
129
|
+
for (const binary of binaries) {
|
|
130
|
+
if (binary.toLowerCase().includes(query.toLowerCase())) {
|
|
131
|
+
results.push(binary);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return results;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.CustomManager = CustomManager;
|
|
139
|
+
//# sourceMappingURL=customManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customManager.js","sourceRoot":"","sources":["../../src/managers/customManager.ts"],"names":[],"mappings":"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"}
|