squeaky-clean 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +465 -0
  3. package/dist/cleaners/BaseCleaner.d.ts +57 -0
  4. package/dist/cleaners/BaseCleaner.d.ts.map +1 -0
  5. package/dist/cleaners/BaseCleaner.js +299 -0
  6. package/dist/cleaners/BaseCleaner.js.map +1 -0
  7. package/dist/cleaners/CleanerRegistry.d.ts +65 -0
  8. package/dist/cleaners/CleanerRegistry.d.ts.map +1 -0
  9. package/dist/cleaners/CleanerRegistry.js +112 -0
  10. package/dist/cleaners/CleanerRegistry.js.map +1 -0
  11. package/dist/cleaners/androidstudio.d.ts +16 -0
  12. package/dist/cleaners/androidstudio.d.ts.map +1 -0
  13. package/dist/cleaners/androidstudio.js +375 -0
  14. package/dist/cleaners/androidstudio.js.map +1 -0
  15. package/dist/cleaners/brew.d.ts +4 -0
  16. package/dist/cleaners/brew.d.ts.map +1 -0
  17. package/dist/cleaners/brew.js +197 -0
  18. package/dist/cleaners/brew.js.map +1 -0
  19. package/dist/cleaners/brewEnhanced.d.ts +18 -0
  20. package/dist/cleaners/brewEnhanced.d.ts.map +1 -0
  21. package/dist/cleaners/brewEnhanced.js +255 -0
  22. package/dist/cleaners/brewEnhanced.js.map +1 -0
  23. package/dist/cleaners/bun.d.ts +14 -0
  24. package/dist/cleaners/bun.d.ts.map +1 -0
  25. package/dist/cleaners/bun.js +207 -0
  26. package/dist/cleaners/bun.js.map +1 -0
  27. package/dist/cleaners/chrome.d.ts +14 -0
  28. package/dist/cleaners/chrome.d.ts.map +1 -0
  29. package/dist/cleaners/chrome.js +250 -0
  30. package/dist/cleaners/chrome.js.map +1 -0
  31. package/dist/cleaners/docker.d.ts +35 -0
  32. package/dist/cleaners/docker.d.ts.map +1 -0
  33. package/dist/cleaners/docker.js +285 -0
  34. package/dist/cleaners/docker.js.map +1 -0
  35. package/dist/cleaners/firefox.d.ts +15 -0
  36. package/dist/cleaners/firefox.d.ts.map +1 -0
  37. package/dist/cleaners/firefox.js +281 -0
  38. package/dist/cleaners/firefox.js.map +1 -0
  39. package/dist/cleaners/flutter.d.ts +18 -0
  40. package/dist/cleaners/flutter.d.ts.map +1 -0
  41. package/dist/cleaners/flutter.js +354 -0
  42. package/dist/cleaners/flutter.js.map +1 -0
  43. package/dist/cleaners/goBuild.d.ts +18 -0
  44. package/dist/cleaners/goBuild.d.ts.map +1 -0
  45. package/dist/cleaners/goBuild.js +196 -0
  46. package/dist/cleaners/goBuild.js.map +1 -0
  47. package/dist/cleaners/gradle.d.ts +14 -0
  48. package/dist/cleaners/gradle.d.ts.map +1 -0
  49. package/dist/cleaners/gradle.js +336 -0
  50. package/dist/cleaners/gradle.js.map +1 -0
  51. package/dist/cleaners/index.d.ts +51 -0
  52. package/dist/cleaners/index.d.ts.map +1 -0
  53. package/dist/cleaners/index.js +247 -0
  54. package/dist/cleaners/index.js.map +1 -0
  55. package/dist/cleaners/jetbrains.d.ts +18 -0
  56. package/dist/cleaners/jetbrains.d.ts.map +1 -0
  57. package/dist/cleaners/jetbrains.js +441 -0
  58. package/dist/cleaners/jetbrains.js.map +1 -0
  59. package/dist/cleaners/nix.d.ts +4 -0
  60. package/dist/cleaners/nix.d.ts.map +1 -0
  61. package/dist/cleaners/nix.js +227 -0
  62. package/dist/cleaners/nix.js.map +1 -0
  63. package/dist/cleaners/nodeGyp.d.ts +14 -0
  64. package/dist/cleaners/nodeGyp.d.ts.map +1 -0
  65. package/dist/cleaners/nodeGyp.js +157 -0
  66. package/dist/cleaners/nodeGyp.js.map +1 -0
  67. package/dist/cleaners/npm.d.ts +14 -0
  68. package/dist/cleaners/npm.d.ts.map +1 -0
  69. package/dist/cleaners/npm.js +198 -0
  70. package/dist/cleaners/npm.js.map +1 -0
  71. package/dist/cleaners/npmEnhanced.d.ts +19 -0
  72. package/dist/cleaners/npmEnhanced.d.ts.map +1 -0
  73. package/dist/cleaners/npmEnhanced.js +336 -0
  74. package/dist/cleaners/npmEnhanced.js.map +1 -0
  75. package/dist/cleaners/nx.d.ts +18 -0
  76. package/dist/cleaners/nx.d.ts.map +1 -0
  77. package/dist/cleaners/nx.js +308 -0
  78. package/dist/cleaners/nx.js.map +1 -0
  79. package/dist/cleaners/pip.d.ts +19 -0
  80. package/dist/cleaners/pip.d.ts.map +1 -0
  81. package/dist/cleaners/pip.js +334 -0
  82. package/dist/cleaners/pip.js.map +1 -0
  83. package/dist/cleaners/pnpm.d.ts +14 -0
  84. package/dist/cleaners/pnpm.d.ts.map +1 -0
  85. package/dist/cleaners/pnpm.js +209 -0
  86. package/dist/cleaners/pnpm.js.map +1 -0
  87. package/dist/cleaners/turbo.d.ts +18 -0
  88. package/dist/cleaners/turbo.d.ts.map +1 -0
  89. package/dist/cleaners/turbo.js +325 -0
  90. package/dist/cleaners/turbo.js.map +1 -0
  91. package/dist/cleaners/vite.d.ts +17 -0
  92. package/dist/cleaners/vite.d.ts.map +1 -0
  93. package/dist/cleaners/vite.js +274 -0
  94. package/dist/cleaners/vite.js.map +1 -0
  95. package/dist/cleaners/vscode.d.ts +14 -0
  96. package/dist/cleaners/vscode.d.ts.map +1 -0
  97. package/dist/cleaners/vscode.js +354 -0
  98. package/dist/cleaners/vscode.js.map +1 -0
  99. package/dist/cleaners/webpack.d.ts +17 -0
  100. package/dist/cleaners/webpack.d.ts.map +1 -0
  101. package/dist/cleaners/webpack.js +263 -0
  102. package/dist/cleaners/webpack.js.map +1 -0
  103. package/dist/cleaners/xcode.d.ts +14 -0
  104. package/dist/cleaners/xcode.d.ts.map +1 -0
  105. package/dist/cleaners/xcode.js +348 -0
  106. package/dist/cleaners/xcode.js.map +1 -0
  107. package/dist/cleaners/yarn.d.ts +16 -0
  108. package/dist/cleaners/yarn.d.ts.map +1 -0
  109. package/dist/cleaners/yarn.js +266 -0
  110. package/dist/cleaners/yarn.js.map +1 -0
  111. package/dist/cli.d.ts +3 -0
  112. package/dist/cli.d.ts.map +1 -0
  113. package/dist/cli.js +346 -0
  114. package/dist/cli.js.map +1 -0
  115. package/dist/commands/auto.d.ts +8 -0
  116. package/dist/commands/auto.d.ts.map +1 -0
  117. package/dist/commands/auto.js +224 -0
  118. package/dist/commands/auto.js.map +1 -0
  119. package/dist/commands/categories.d.ts +8 -0
  120. package/dist/commands/categories.d.ts.map +1 -0
  121. package/dist/commands/categories.js +133 -0
  122. package/dist/commands/categories.js.map +1 -0
  123. package/dist/commands/clean.d.ts +3 -0
  124. package/dist/commands/clean.d.ts.map +1 -0
  125. package/dist/commands/clean.js +149 -0
  126. package/dist/commands/clean.js.map +1 -0
  127. package/dist/commands/config.d.ts +14 -0
  128. package/dist/commands/config.d.ts.map +1 -0
  129. package/dist/commands/config.js +445 -0
  130. package/dist/commands/config.js.map +1 -0
  131. package/dist/commands/configDoctor.d.ts +26 -0
  132. package/dist/commands/configDoctor.d.ts.map +1 -0
  133. package/dist/commands/configDoctor.js +60 -0
  134. package/dist/commands/configDoctor.js.map +1 -0
  135. package/dist/commands/doctor.d.ts +2 -0
  136. package/dist/commands/doctor.d.ts.map +1 -0
  137. package/dist/commands/doctor.js +141 -0
  138. package/dist/commands/doctor.js.map +1 -0
  139. package/dist/commands/emojis.d.ts +2 -0
  140. package/dist/commands/emojis.d.ts.map +1 -0
  141. package/dist/commands/emojis.js +28 -0
  142. package/dist/commands/emojis.js.map +1 -0
  143. package/dist/commands/interactive.d.ts +3 -0
  144. package/dist/commands/interactive.d.ts.map +1 -0
  145. package/dist/commands/interactive.js +284 -0
  146. package/dist/commands/interactive.js.map +1 -0
  147. package/dist/commands/interactiveEnhanced.d.ts +4 -0
  148. package/dist/commands/interactiveEnhanced.d.ts.map +1 -0
  149. package/dist/commands/interactiveEnhanced.js +460 -0
  150. package/dist/commands/interactiveEnhanced.js.map +1 -0
  151. package/dist/commands/list.d.ts +2 -0
  152. package/dist/commands/list.d.ts.map +1 -0
  153. package/dist/commands/list.js +68 -0
  154. package/dist/commands/list.js.map +1 -0
  155. package/dist/commands/sizes.d.ts +2 -0
  156. package/dist/commands/sizes.d.ts.map +1 -0
  157. package/dist/commands/sizes.js +87 -0
  158. package/dist/commands/sizes.js.map +1 -0
  159. package/dist/config/index.d.ts +26 -0
  160. package/dist/config/index.d.ts.map +1 -0
  161. package/dist/config/index.js +228 -0
  162. package/dist/config/index.js.map +1 -0
  163. package/dist/config/loadConfig.d.ts +7 -0
  164. package/dist/config/loadConfig.d.ts.map +1 -0
  165. package/dist/config/loadConfig.js +103 -0
  166. package/dist/config/loadConfig.js.map +1 -0
  167. package/dist/config/migrateConfig.d.ts +56 -0
  168. package/dist/config/migrateConfig.d.ts.map +1 -0
  169. package/dist/config/migrateConfig.js +102 -0
  170. package/dist/config/migrateConfig.js.map +1 -0
  171. package/dist/plugins/discovery.d.ts +6 -0
  172. package/dist/plugins/discovery.d.ts.map +1 -0
  173. package/dist/plugins/discovery.js +64 -0
  174. package/dist/plugins/discovery.js.map +1 -0
  175. package/dist/profiles/index.d.ts +61 -0
  176. package/dist/profiles/index.d.ts.map +1 -0
  177. package/dist/profiles/index.js +361 -0
  178. package/dist/profiles/index.js.map +1 -0
  179. package/dist/types/index.d.ts +161 -0
  180. package/dist/types/index.d.ts.map +1 -0
  181. package/dist/types/index.js +3 -0
  182. package/dist/types/index.js.map +1 -0
  183. package/dist/utils/cli.d.ts +44 -0
  184. package/dist/utils/cli.d.ts.map +1 -0
  185. package/dist/utils/cli.js +407 -0
  186. package/dist/utils/cli.js.map +1 -0
  187. package/dist/utils/fs.d.ts +15 -0
  188. package/dist/utils/fs.d.ts.map +1 -0
  189. package/dist/utils/fs.js +218 -0
  190. package/dist/utils/fs.js.map +1 -0
  191. package/package.json +122 -0
@@ -0,0 +1,445 @@
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
+ exports.configCommand = configCommand;
40
+ const cli_1 = require("../utils/cli");
41
+ const config_1 = require("../config");
42
+ const cleaners_1 = require("../cleaners");
43
+ const chalk_1 = __importDefault(require("chalk"));
44
+ const inquirer_1 = __importDefault(require("inquirer"));
45
+ async function configCommand(options) {
46
+ try {
47
+ console.log("\n⚙️ Configuration Management");
48
+ console.log("─".repeat(35));
49
+ // Show config path if requested
50
+ if (options.path) {
51
+ await showConfigPath();
52
+ return;
53
+ }
54
+ // Interactive configuration wizard
55
+ if (options.interactive) {
56
+ await interactiveConfigWizard();
57
+ return;
58
+ }
59
+ // If no options provided, show current config
60
+ if (!options.list &&
61
+ !options.get &&
62
+ !options.set &&
63
+ !options.enable &&
64
+ !options.disable &&
65
+ !options.reset) {
66
+ await showCurrentConfig();
67
+ return;
68
+ }
69
+ // List all configuration options
70
+ if (options.list) {
71
+ await showCurrentConfig();
72
+ return;
73
+ }
74
+ // Get specific configuration value
75
+ if (options.get) {
76
+ await getConfigValue(options.get);
77
+ return;
78
+ }
79
+ // Set configuration value
80
+ if (options.set) {
81
+ await setConfigValue(options.set);
82
+ return;
83
+ }
84
+ // Enable specific tool
85
+ if (options.enable) {
86
+ await enableTool(options.enable);
87
+ return;
88
+ }
89
+ // Disable specific tool
90
+ if (options.disable) {
91
+ await disableTool(options.disable);
92
+ return;
93
+ }
94
+ // Reset configuration
95
+ if (options.reset) {
96
+ await resetConfiguration();
97
+ return;
98
+ }
99
+ }
100
+ catch (error) {
101
+ (0, cli_1.printError)(`Config command error: ${error}`);
102
+ throw error;
103
+ }
104
+ }
105
+ async function showCurrentConfig() {
106
+ const currentConfig = config_1.config.get();
107
+ console.log("\n📋 Current Configuration:");
108
+ console.log();
109
+ // Output settings
110
+ console.log(chalk_1.default.bold("📝 Output Settings:"));
111
+ console.log(` ${cli_1.symbols.folder} Verbose: ${currentConfig.output?.verbose ? chalk_1.default.green("enabled") : chalk_1.default.gray("disabled")}`);
112
+ console.log(` ${cli_1.symbols.folder} Colors: ${currentConfig.output?.useColors !== false ? chalk_1.default.green("enabled") : chalk_1.default.gray("disabled")}`);
113
+ console.log();
114
+ // Safety settings
115
+ console.log(chalk_1.default.bold("🔒 Safety Settings:"));
116
+ console.log(` ${cli_1.symbols.folder} Require Confirmation: ${config_1.config.shouldRequireConfirmation() ? chalk_1.default.yellow("yes") : chalk_1.default.green("no")}`);
117
+ console.log();
118
+ // Tool enablement
119
+ console.log(chalk_1.default.bold("🔧 Tool Enablement:"));
120
+ const allCleaners = cleaners_1.cacheManager.getAllCleaners();
121
+ const groupedCleaners = {
122
+ "package-manager": allCleaners.filter((c) => c.type === "package-manager"),
123
+ "build-tool": allCleaners.filter((c) => c.type === "build-tool"),
124
+ ide: allCleaners.filter((c) => c.type === "ide"),
125
+ browser: allCleaners.filter((c) => c.type === "browser"),
126
+ system: allCleaners.filter((c) => c.type === "system"),
127
+ };
128
+ const typeEmojis = {
129
+ "package-manager": "📦",
130
+ "build-tool": "🔨",
131
+ ide: "💻",
132
+ browser: "🌐",
133
+ system: "⚙️",
134
+ };
135
+ for (const [type, cleaners] of Object.entries(groupedCleaners)) {
136
+ if (cleaners.length === 0)
137
+ continue;
138
+ console.log(` ${typeEmojis[type]} ${type}:`);
139
+ for (const cleaner of cleaners) {
140
+ const enabled = config_1.config.isToolEnabled(cleaner.name);
141
+ const status = enabled
142
+ ? chalk_1.default.green("✓ enabled")
143
+ : chalk_1.default.red("✗ disabled");
144
+ console.log(` ${status} ${cleaner.name}`);
145
+ }
146
+ }
147
+ console.log();
148
+ (0, cli_1.printInfo)("💡 Use `squeaky config --help` to see available configuration options");
149
+ }
150
+ async function getConfigValue(key) {
151
+ const currentConfig = config_1.config.get();
152
+ let value;
153
+ switch (key.toLowerCase()) {
154
+ case "verbose":
155
+ value = currentConfig.output?.verbose;
156
+ break;
157
+ case "colors":
158
+ case "usecolors":
159
+ value = currentConfig.output?.useColors;
160
+ break;
161
+ default:
162
+ // Try to get nested value
163
+ const keys = key.split(".");
164
+ value = keys.reduce((obj, k) => obj?.[k], currentConfig);
165
+ }
166
+ if (value !== undefined) {
167
+ console.log(`\n${cli_1.symbols.folder} ${key}: ${chalk_1.default.bold(String(value))}`);
168
+ }
169
+ else {
170
+ (0, cli_1.printWarning)(`Configuration key '${key}' not found`);
171
+ (0, cli_1.printInfo)("Use `squeaky config --list` to see available options");
172
+ }
173
+ }
174
+ async function setConfigValue(keyValue) {
175
+ const [key, value] = keyValue.split("=", 2);
176
+ if (!key || value === undefined) {
177
+ (0, cli_1.printError)("Invalid format. Use: --set key=value");
178
+ (0, cli_1.printInfo)("Example: --set verbose=true");
179
+ return;
180
+ }
181
+ const currentConfig = config_1.config.get();
182
+ let parsedValue = value;
183
+ // Parse boolean values
184
+ if (value.toLowerCase() === "true")
185
+ parsedValue = true;
186
+ else if (value.toLowerCase() === "false")
187
+ parsedValue = false;
188
+ // Update configuration
189
+ switch (key.toLowerCase()) {
190
+ case "verbose":
191
+ config_1.config.set({
192
+ ...currentConfig,
193
+ output: { ...currentConfig.output, verbose: parsedValue },
194
+ });
195
+ (0, cli_1.printSuccess)(`Set verbose output to ${parsedValue}`);
196
+ break;
197
+ case "colors":
198
+ case "usecolors":
199
+ config_1.config.set({
200
+ ...currentConfig,
201
+ output: { ...currentConfig.output, useColors: parsedValue },
202
+ });
203
+ (0, cli_1.printSuccess)(`Set colored output to ${parsedValue}`);
204
+ break;
205
+ default:
206
+ (0, cli_1.printError)(`Unknown configuration key: ${key}`);
207
+ (0, cli_1.printInfo)("Use `squeaky config --list` to see available options");
208
+ return;
209
+ }
210
+ }
211
+ async function enableTool(toolName) {
212
+ const allCleaners = cleaners_1.cacheManager.getAllCleaners();
213
+ const cleaner = allCleaners.find((c) => c.name === toolName);
214
+ if (!cleaner) {
215
+ (0, cli_1.printError)(`Tool '${toolName}' not found`);
216
+ (0, cli_1.printInfo)(`Available tools: ${allCleaners.map((c) => c.name).join(", ")}`);
217
+ return;
218
+ }
219
+ const currentConfig = config_1.config.get();
220
+ const tools = { ...currentConfig.tools, [toolName]: true };
221
+ config_1.config.set({ ...currentConfig, tools });
222
+ (0, cli_1.printSuccess)(`✓ Enabled ${toolName} cache cleaner`);
223
+ }
224
+ async function disableTool(toolName) {
225
+ const allCleaners = cleaners_1.cacheManager.getAllCleaners();
226
+ const cleaner = allCleaners.find((c) => c.name === toolName);
227
+ if (!cleaner) {
228
+ (0, cli_1.printError)(`Tool '${toolName}' not found`);
229
+ (0, cli_1.printInfo)(`Available tools: ${allCleaners.map((c) => c.name).join(", ")}`);
230
+ return;
231
+ }
232
+ const currentConfig = config_1.config.get();
233
+ const tools = { ...currentConfig.tools, [toolName]: false };
234
+ config_1.config.set({ ...currentConfig, tools });
235
+ (0, cli_1.printWarning)(`✗ Disabled ${toolName} cache cleaner`);
236
+ }
237
+ async function resetConfiguration() {
238
+ (0, cli_1.printWarning)("This will reset all configuration to defaults.");
239
+ (0, cli_1.printInfo)("All tools will be enabled and settings will be restored to defaults.");
240
+ // In a real implementation, you might want to ask for confirmation
241
+ // Reset to defaults by creating a new default config
242
+ const defaultConfig = {
243
+ enabledCaches: {
244
+ packageManagers: true,
245
+ buildTools: true,
246
+ browsers: true,
247
+ ides: true,
248
+ system: true,
249
+ },
250
+ tools: {
251
+ // Package managers
252
+ npm: true,
253
+ yarn: true,
254
+ pnpm: true,
255
+ bun: true,
256
+ pip: true,
257
+ // Build tools
258
+ webpack: true,
259
+ vite: true,
260
+ nx: true,
261
+ turbo: true,
262
+ flutter: true,
263
+ // Browsers
264
+ chrome: true,
265
+ firefox: true,
266
+ // IDEs
267
+ vscode: true,
268
+ xcode: true,
269
+ androidstudio: true,
270
+ jetbrains: true,
271
+ // System tools
272
+ docker: true,
273
+ gradle: true,
274
+ maven: true,
275
+ },
276
+ safety: {
277
+ requireConfirmation: false,
278
+ dryRunDefault: false,
279
+ backupBeforeClearing: false,
280
+ excludeSystemCritical: true,
281
+ },
282
+ customPaths: [],
283
+ output: {
284
+ verbose: false,
285
+ showSizes: true,
286
+ useColors: true,
287
+ },
288
+ };
289
+ config_1.config.set(defaultConfig);
290
+ (0, cli_1.printSuccess)("✓ Configuration reset to defaults");
291
+ // Show new configuration
292
+ console.log();
293
+ await showCurrentConfig();
294
+ }
295
+ async function showConfigPath() {
296
+ const configPath = config_1.config.getConfigPath();
297
+ console.log(`\n📂 Configuration file location:`);
298
+ console.log(` ${chalk_1.default.bold(configPath)}`);
299
+ // Check if config file exists
300
+ try {
301
+ const fs = await Promise.resolve().then(() => __importStar(require("fs")));
302
+ const exists = fs.existsSync(configPath);
303
+ if (exists) {
304
+ console.log(chalk_1.default.green(" ✓ Config file exists"));
305
+ }
306
+ else {
307
+ console.log(chalk_1.default.yellow(" ⚠ Config file will be created when first used"));
308
+ }
309
+ }
310
+ catch (error) {
311
+ console.log(chalk_1.default.gray(" (Unable to check file existence)"));
312
+ }
313
+ }
314
+ async function interactiveConfigWizard() {
315
+ console.log("\n🧙‍♂️ Interactive Configuration Wizard");
316
+ console.log(chalk_1.default.gray("This wizard will help you configure squeaky-clean settings.\n"));
317
+ const currentConfig = config_1.config.get();
318
+ const allCleaners = cleaners_1.cacheManager.getAllCleaners();
319
+ // Group cleaners by type
320
+ const groupedCleaners = {
321
+ "package-manager": allCleaners.filter((c) => c.type === "package-manager"),
322
+ "build-tool": allCleaners.filter((c) => c.type === "build-tool"),
323
+ ide: allCleaners.filter((c) => c.type === "ide"),
324
+ browser: allCleaners.filter((c) => c.type === "browser"),
325
+ system: allCleaners.filter((c) => c.type === "system"),
326
+ };
327
+ // Step 1: Output preferences
328
+ console.log(chalk_1.default.bold("📝 Step 1: Output Preferences"));
329
+ const outputAnswers = await inquirer_1.default.prompt([
330
+ {
331
+ type: "confirm",
332
+ name: "verbose",
333
+ message: "Enable verbose output (shows detailed information)?",
334
+ default: currentConfig.output?.verbose || false,
335
+ },
336
+ {
337
+ type: "confirm",
338
+ name: "useColors",
339
+ message: "Enable colored output (recommended for terminals that support colors)?",
340
+ default: currentConfig.output?.useColors !== false,
341
+ },
342
+ ]);
343
+ // Step 2: Safety preferences
344
+ console.log(chalk_1.default.bold("\n🔒 Step 2: Safety Preferences"));
345
+ const safetyAnswers = await inquirer_1.default.prompt([
346
+ {
347
+ type: "confirm",
348
+ name: "requireConfirmation",
349
+ message: "Require confirmation before cleaning caches (recommended for safety)?",
350
+ default: config_1.config.shouldRequireConfirmation(),
351
+ },
352
+ ]);
353
+ // Step 3: Tool enablement by category
354
+ console.log(chalk_1.default.bold("\n🔧 Step 3: Tool Configuration"));
355
+ console.log(chalk_1.default.gray("Configure which cache cleaners should be enabled by category.\n"));
356
+ const toolAnswers = {};
357
+ for (const [type, cleaners] of Object.entries(groupedCleaners)) {
358
+ if (cleaners.length === 0)
359
+ continue;
360
+ const typeEmojis = {
361
+ "package-manager": "📦",
362
+ "build-tool": "🔨",
363
+ ide: "💻",
364
+ browser: "🌐",
365
+ system: "⚙️",
366
+ };
367
+ console.log(chalk_1.default.bold(`\n${typeEmojis[type]} ${type.charAt(0).toUpperCase() + type.slice(1).replace("-", " ")} Tools:`));
368
+ const categoryAnswers = await inquirer_1.default.prompt([
369
+ {
370
+ type: "checkbox",
371
+ name: "enabledTools",
372
+ message: `Select which ${type.replace("-", " ")} tools to enable:`,
373
+ choices: cleaners.map((cleaner) => ({
374
+ name: `${cleaner.name} - ${cleaner.description}`,
375
+ value: cleaner.name,
376
+ checked: config_1.config.isToolEnabled(cleaner.name),
377
+ })),
378
+ },
379
+ ]);
380
+ // Mark selected tools as enabled, others as disabled for this category
381
+ cleaners.forEach((cleaner) => {
382
+ toolAnswers[cleaner.name] = categoryAnswers.enabledTools.includes(cleaner.name);
383
+ });
384
+ }
385
+ // Step 4: Review and apply
386
+ console.log(chalk_1.default.bold("\n📋 Step 4: Review Configuration"));
387
+ console.log("\nYour new configuration will be:");
388
+ console.log(` ${cli_1.symbols.folder} Verbose output: ${outputAnswers.verbose ? chalk_1.default.green("enabled") : chalk_1.default.gray("disabled")}`);
389
+ console.log(` ${cli_1.symbols.folder} Colored output: ${outputAnswers.useColors ? chalk_1.default.green("enabled") : chalk_1.default.gray("disabled")}`);
390
+ console.log(` ${cli_1.symbols.folder} Require confirmation: ${safetyAnswers.requireConfirmation ? chalk_1.default.yellow("yes") : chalk_1.default.green("no")}`);
391
+ console.log("\n🔧 Enabled tools:");
392
+ const enabledTools = Object.entries(toolAnswers)
393
+ .filter(([_, enabled]) => enabled)
394
+ .map(([name, _]) => name);
395
+ const disabledTools = Object.entries(toolAnswers)
396
+ .filter(([_, enabled]) => !enabled)
397
+ .map(([name, _]) => name);
398
+ if (enabledTools.length > 0) {
399
+ enabledTools.forEach((tool) => {
400
+ console.log(` ${chalk_1.default.green("✓")} ${tool}`);
401
+ });
402
+ }
403
+ if (disabledTools.length > 0) {
404
+ console.log("\n🔧 Disabled tools:");
405
+ disabledTools.forEach((tool) => {
406
+ console.log(` ${chalk_1.default.red("✗")} ${tool}`);
407
+ });
408
+ }
409
+ const { confirmApply } = await inquirer_1.default.prompt([
410
+ {
411
+ type: "confirm",
412
+ name: "confirmApply",
413
+ message: "\nApply this configuration?",
414
+ default: true,
415
+ },
416
+ ]);
417
+ if (confirmApply) {
418
+ // Apply the configuration
419
+ const newConfig = {
420
+ ...currentConfig,
421
+ output: {
422
+ ...currentConfig.output,
423
+ verbose: outputAnswers.verbose,
424
+ useColors: outputAnswers.useColors,
425
+ },
426
+ safety: {
427
+ ...currentConfig.safety,
428
+ requireConfirmation: safetyAnswers.requireConfirmation,
429
+ },
430
+ tools: {
431
+ ...currentConfig.tools,
432
+ ...toolAnswers,
433
+ },
434
+ };
435
+ config_1.config.set(newConfig);
436
+ (0, cli_1.printSuccess)("\n✓ Configuration applied successfully!");
437
+ // Show final configuration
438
+ console.log();
439
+ await showCurrentConfig();
440
+ }
441
+ else {
442
+ (0, cli_1.printWarning)("\n⚠ Configuration changes cancelled.");
443
+ }
444
+ }
445
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface DoctorOptions {
2
+ input?: string;
3
+ output?: string;
4
+ dryRun?: boolean;
5
+ quiet?: boolean;
6
+ }
7
+ export declare function runConfigDoctor(opts?: DoctorOptions): Promise<{
8
+ changed: boolean;
9
+ input: string;
10
+ output?: undefined;
11
+ backup?: undefined;
12
+ dryRun?: undefined;
13
+ } | {
14
+ changed: boolean;
15
+ input: string;
16
+ output: undefined;
17
+ backup: undefined;
18
+ dryRun: boolean;
19
+ } | {
20
+ changed: boolean;
21
+ input: string;
22
+ output: string;
23
+ backup: string | undefined;
24
+ dryRun: boolean;
25
+ }>;
26
+ //# sourceMappingURL=configDoctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configDoctor.d.ts","sourceRoot":"","sources":["../../src/commands/configDoctor.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAsB,eAAe,CAAC,IAAI,GAAE,aAAkB;;;;;;;;;;;;;;;;;;GA8D7D"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ // src/commands/configDoctor.ts
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
+ exports.runConfigDoctor = runConfigDoctor;
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const migrateConfig_js_1 = require("../config/migrateConfig.js");
11
+ function log(msg, quiet) {
12
+ if (!quiet)
13
+ console.log(msg);
14
+ }
15
+ async function runConfigDoctor(opts = {}) {
16
+ const cfgPath = opts.input ||
17
+ node_path_1.default.join(process.env.HOME || process.env.USERPROFILE || ".", ".squeaky-clean", "config.json");
18
+ if (!node_fs_1.default.existsSync(cfgPath)) {
19
+ throw new Error(`Config not found at ${cfgPath}`);
20
+ }
21
+ const raw = JSON.parse(node_fs_1.default.readFileSync(cfgPath, "utf8"));
22
+ if (!(0, migrateConfig_js_1.isLegacyShape)(raw)) {
23
+ log("No legacy keys detected. Your config already uses the new schema.", opts.quiet);
24
+ return { changed: false, input: cfgPath };
25
+ }
26
+ const converted = (0, migrateConfig_js_1.legacyToNew)(raw);
27
+ if (opts.dryRun) {
28
+ log("=== Dry Run: Converted config (not written) ===", opts.quiet);
29
+ console.log(JSON.stringify(converted, null, 2));
30
+ return {
31
+ changed: true,
32
+ input: cfgPath,
33
+ output: undefined,
34
+ backup: undefined,
35
+ dryRun: true,
36
+ };
37
+ }
38
+ const outPath = opts.output || cfgPath;
39
+ let backup;
40
+ if (!opts.output) {
41
+ // in-place: write backup first
42
+ backup = (0, migrateConfig_js_1.writeBackupAndSave)(outPath, converted);
43
+ log(`Saved backup: ${backup}`, opts.quiet);
44
+ log(`Overwrote config with migrated schema: ${outPath}`, opts.quiet);
45
+ }
46
+ else {
47
+ // to a new file: don’t overwrite input
48
+ node_fs_1.default.mkdirSync(node_path_1.default.dirname(outPath), { recursive: true });
49
+ node_fs_1.default.writeFileSync(outPath, JSON.stringify(converted, null, 2) + "\n", "utf8");
50
+ log(`Wrote migrated config to: ${outPath}`, opts.quiet);
51
+ }
52
+ return {
53
+ changed: true,
54
+ input: cfgPath,
55
+ output: outPath,
56
+ backup,
57
+ dryRun: false,
58
+ };
59
+ }
60
+ //# sourceMappingURL=configDoctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configDoctor.js","sourceRoot":"","sources":["../../src/commands/configDoctor.ts"],"names":[],"mappings":";AAAA,+BAA+B;;;;;AAqB/B,0CA8DC;AAjFD,sDAAyB;AACzB,0DAA6B;AAC7B,iEAIoC;AASpC,SAAS,GAAG,CAAC,GAAW,EAAE,KAAe;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,OAAsB,EAAE;IAC5D,MAAM,OAAO,GACX,IAAI,CAAC,KAAK;QACV,mBAAI,CAAC,IAAI,CACP,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,EAClD,gBAAgB,EAChB,aAAa,CACd,CAAC;IAEJ,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,IAAA,gCAAa,EAAC,GAAG,CAAC,EAAE,CAAC;QACxB,GAAG,CACD,mEAAmE,EACnE,IAAI,CAAC,KAAK,CACX,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,8BAAW,EAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,iDAAiD,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;IACvC,IAAI,MAA0B,CAAC;IAE/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,+BAA+B;QAC/B,MAAM,GAAG,IAAA,qCAAkB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,GAAG,CAAC,iBAAiB,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,GAAG,CAAC,0CAA0C,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,uCAAuC;QACvC,iBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,iBAAE,CAAC,aAAa,CACd,OAAO,EACP,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACzC,MAAM,CACP,CAAC;QACF,GAAG,CAAC,6BAA6B,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,MAAM;QACN,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function doctorCommand(): Promise<void>;
2
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA0HnD"}