@cleaver/breakcheck 0.2.4 → 0.3.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/README.md +180 -13
- package/agent-guide.md +107 -0
- package/dist/cli/commands/baseline.d.ts +19 -0
- package/dist/cli/commands/baseline.js +133 -0
- package/dist/cli/commands/baseline.js.map +1 -0
- package/dist/cli/commands/check.d.ts +27 -0
- package/dist/cli/commands/check.js +204 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/clean.d.ts +25 -0
- package/dist/cli/commands/clean.js +123 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/compare.js +28 -6
- package/dist/cli/commands/compare.js.map +1 -1
- package/dist/cli/commands/compile.d.ts +5 -0
- package/dist/cli/commands/compile.js +23 -0
- package/dist/cli/commands/compile.js.map +1 -0
- package/dist/cli/commands/help.js +173 -7
- package/dist/cli/commands/help.js.map +1 -1
- package/dist/cli/commands/init.d.ts +26 -0
- package/dist/cli/commands/init.js +224 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list-snapshots.js +7 -3
- package/dist/cli/commands/list-snapshots.js.map +1 -1
- package/dist/cli/commands/new.d.ts +9 -0
- package/dist/cli/commands/new.js +27 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/commands/snapshot.d.ts +20 -0
- package/dist/cli/commands/snapshot.js +128 -26
- package/dist/cli/commands/snapshot.js.map +1 -1
- package/dist/cli/commands/view.d.ts +1 -1
- package/dist/cli/commands/view.js +12 -6
- package/dist/cli/commands/view.js.map +1 -1
- package/dist/cli/config.d.ts +14 -0
- package/dist/cli/config.js +58 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/rules.d.ts +12 -0
- package/dist/cli/rules.js +110 -0
- package/dist/cli/rules.js.map +1 -0
- package/dist/cli/site-environment.d.ts +12 -0
- package/dist/cli/site-environment.js +231 -0
- package/dist/cli/site-environment.js.map +1 -0
- package/dist/cli/url-manifest.d.ts +18 -0
- package/dist/cli/url-manifest.js +63 -0
- package/dist/cli/url-manifest.js.map +1 -0
- package/dist/cli/utils.d.ts +1 -0
- package/dist/cli/utils.js +5 -2
- package/dist/cli/utils.js.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -7
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InteractiveCommand } from "interactive-commander";
|
|
2
|
+
import { addConfigOptions } from "../config.js";
|
|
2
3
|
import { configureLogger } from "../utils.js";
|
|
3
|
-
export const helpCommand = new InteractiveCommand("help")
|
|
4
|
+
export const helpCommand = addConfigOptions(new InteractiveCommand("help")
|
|
4
5
|
.description("Show detailed help for a specific command")
|
|
5
6
|
.argument("[command]", "The command to show help for")
|
|
6
7
|
.option("--json-logs", "Output logs in JSON format")
|
|
@@ -14,12 +15,31 @@ export const helpCommand = new InteractiveCommand("help")
|
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
16
17
|
switch (commandName.toLowerCase()) {
|
|
18
|
+
case "init":
|
|
19
|
+
showInitHelp(logger);
|
|
20
|
+
break;
|
|
21
|
+
case "new":
|
|
22
|
+
case "rule":
|
|
23
|
+
showNewRuleHelp(logger);
|
|
24
|
+
break;
|
|
25
|
+
case "compile":
|
|
26
|
+
showCompileHelp(logger);
|
|
27
|
+
break;
|
|
17
28
|
case "snapshot":
|
|
18
29
|
showSnapshotHelp(logger);
|
|
19
30
|
break;
|
|
31
|
+
case "check":
|
|
32
|
+
showCheckHelp(logger);
|
|
33
|
+
break;
|
|
34
|
+
case "baseline":
|
|
35
|
+
showBaselineHelp(logger);
|
|
36
|
+
break;
|
|
20
37
|
case "compare":
|
|
21
38
|
showCompareHelp(logger);
|
|
22
39
|
break;
|
|
40
|
+
case "clean":
|
|
41
|
+
showCleanHelp(logger);
|
|
42
|
+
break;
|
|
23
43
|
case "view":
|
|
24
44
|
showViewHelp(logger);
|
|
25
45
|
break;
|
|
@@ -29,7 +49,7 @@ export const helpCommand = new InteractiveCommand("help")
|
|
|
29
49
|
break;
|
|
30
50
|
default:
|
|
31
51
|
logger.error(`Unknown command: ${commandName}`);
|
|
32
|
-
logger.info("Available commands: snapshot, compare, view, list-snapshots");
|
|
52
|
+
logger.info("Available commands: init, new rule, compile, snapshot, check, baseline update, compare, clean, view, list-snapshots");
|
|
33
53
|
process.exit(1);
|
|
34
54
|
}
|
|
35
55
|
}
|
|
@@ -37,7 +57,7 @@ export const helpCommand = new InteractiveCommand("help")
|
|
|
37
57
|
logger.error({ err: error }, "❌ Error showing help");
|
|
38
58
|
process.exit(1);
|
|
39
59
|
}
|
|
40
|
-
});
|
|
60
|
+
}));
|
|
41
61
|
function showGeneralHelp(logger) {
|
|
42
62
|
logger.info("Breakcheck - A tool for comparing website states before and after changes");
|
|
43
63
|
logger.info("");
|
|
@@ -46,11 +66,17 @@ function showGeneralHelp(logger) {
|
|
|
46
66
|
logger.info(" 2. ⚙️ Make your changes (deploy, migrate, etc.)");
|
|
47
67
|
logger.info(" 3. 📸 Take an 'after' snapshot: breakcheck snapshot --url <url> --name <name>");
|
|
48
68
|
logger.info(" 4. 🔍 Compare the snapshots: breakcheck compare --before <name> --after <name>");
|
|
49
|
-
logger.info(" 5.
|
|
69
|
+
logger.info(" 5. 📜️ View the results: breakcheck view <comparison-name>");
|
|
50
70
|
logger.info("");
|
|
51
71
|
logger.info("Available Commands:");
|
|
72
|
+
logger.info(" init Create a project configuration");
|
|
73
|
+
logger.info(" new rule Scaffold a rules.breakcheck file");
|
|
74
|
+
logger.info(" compile Compile rules.breakcheck to JSON");
|
|
52
75
|
logger.info(" snapshot Create a snapshot of a website");
|
|
76
|
+
logger.info(" check Check exact routes against a stored baseline");
|
|
77
|
+
logger.info(" baseline update Update selected routes in the baseline");
|
|
53
78
|
logger.info(" compare Compare two snapshots and save the results");
|
|
79
|
+
logger.info(" clean Delete stored snapshots or comparisons");
|
|
54
80
|
logger.info(" view View the results of a comparison in your browser");
|
|
55
81
|
logger.info(" list-snapshots List all available snapshots");
|
|
56
82
|
logger.info(" help Show detailed help for a specific command");
|
|
@@ -58,14 +84,50 @@ function showGeneralHelp(logger) {
|
|
|
58
84
|
logger.info("Global Options:");
|
|
59
85
|
logger.info(" --json-logs Output logs in JSON format (useful for automation)");
|
|
60
86
|
logger.info(" --no-json-logs Output logs in pretty format (default, user-friendly)");
|
|
87
|
+
logger.info(" --config <file> Select a project configuration file");
|
|
88
|
+
logger.info(" --no-config Disable project configuration discovery");
|
|
61
89
|
logger.info("");
|
|
62
90
|
logger.info("Examples:");
|
|
63
91
|
logger.info(" breakcheck help snapshot");
|
|
92
|
+
logger.info(" breakcheck help check");
|
|
93
|
+
logger.info(" breakcheck help baseline");
|
|
64
94
|
logger.info(" breakcheck help compare");
|
|
95
|
+
logger.info(" breakcheck help compile");
|
|
96
|
+
logger.info(" breakcheck help clean");
|
|
65
97
|
logger.info(" breakcheck help view");
|
|
98
|
+
logger.info(" breakcheck help new");
|
|
66
99
|
logger.info("");
|
|
67
100
|
logger.info("For more information, visit: https://github.com/your-repo/breakcheck");
|
|
68
101
|
}
|
|
102
|
+
function showCheckHelp(logger) {
|
|
103
|
+
logger.info("✅ CHECK COMMAND");
|
|
104
|
+
logger.info("================");
|
|
105
|
+
logger.info("");
|
|
106
|
+
logger.info("Build or prepare a local site, start its configured environment, and compare exact routes with the stored baseline.");
|
|
107
|
+
logger.info("");
|
|
108
|
+
logger.info("Usage:");
|
|
109
|
+
logger.info(" breakcheck check [--url <url>] [--json]");
|
|
110
|
+
logger.info("");
|
|
111
|
+
logger.info("Options:");
|
|
112
|
+
logger.info(" -u, --url <url> Use an already-running site and skip setup/start/stop");
|
|
113
|
+
logger.info(" --json Write one machine-readable report to stdout");
|
|
114
|
+
logger.info(" --config <file> Select a project configuration file");
|
|
115
|
+
logger.info(" --no-config Disable project configuration discovery");
|
|
116
|
+
logger.info("");
|
|
117
|
+
logger.info("Exit codes: 0 no differences, 1 differences, 2 setup/crawl failure.");
|
|
118
|
+
}
|
|
119
|
+
function showBaselineHelp(logger) {
|
|
120
|
+
logger.info("📌 BASELINE COMMAND");
|
|
121
|
+
logger.info("===================");
|
|
122
|
+
logger.info("");
|
|
123
|
+
logger.info("Update routes in the configured baseline snapshot. A normal check never changes the baseline.");
|
|
124
|
+
logger.info("");
|
|
125
|
+
logger.info("Usage:");
|
|
126
|
+
logger.info(" breakcheck baseline update --route <path...>");
|
|
127
|
+
logger.info(" breakcheck baseline update --all");
|
|
128
|
+
logger.info("");
|
|
129
|
+
logger.info("--route updates only the selected routes. --all updates the exact routes in check.routesFile.");
|
|
130
|
+
}
|
|
69
131
|
function showSnapshotHelp(logger) {
|
|
70
132
|
logger.info("📸 SNAPSHOT COMMAND");
|
|
71
133
|
logger.info("===================");
|
|
@@ -76,7 +138,7 @@ function showSnapshotHelp(logger) {
|
|
|
76
138
|
logger.info(" breakcheck snapshot [options]");
|
|
77
139
|
logger.info("");
|
|
78
140
|
logger.info("Required Options:");
|
|
79
|
-
logger.info(" -u, --url <url> The base URL
|
|
141
|
+
logger.info(" -u, --url <url> The base URL (or use baseUrl in project config)");
|
|
80
142
|
logger.info("");
|
|
81
143
|
logger.info("Optional Options:");
|
|
82
144
|
logger.info(" -n, --name <name> A unique name for the snapshot");
|
|
@@ -85,7 +147,10 @@ function showSnapshotHelp(logger) {
|
|
|
85
147
|
logger.info(" -c, --concurrency <number> Number of concurrent requests (default: 5)");
|
|
86
148
|
logger.info(" -i, --include <patterns...> Glob patterns for URLs to include");
|
|
87
149
|
logger.info(" -e, --exclude <patterns...> Glob patterns for URLs to exclude");
|
|
150
|
+
logger.info(" --no-include Clear configured include patterns");
|
|
151
|
+
logger.info(" --no-exclude Clear configured exclude patterns");
|
|
88
152
|
logger.info(" -t, --type <type> The crawler to use: cheerio or playwright (default: cheerio)");
|
|
153
|
+
logger.info(" --url-file <path> Crawl exactly paths from a file, or '-' for stdin");
|
|
89
154
|
logger.info(" -w, --write-urls <path> Generate a plain text file of all crawled URLs");
|
|
90
155
|
logger.info(" --json-logs Output logs in JSON format");
|
|
91
156
|
logger.info(" --no-json-logs Output logs in pretty format (default)");
|
|
@@ -106,8 +171,36 @@ function showSnapshotHelp(logger) {
|
|
|
106
171
|
logger.info(" # Generate a URL list file");
|
|
107
172
|
logger.info(" breakcheck snapshot --url https://my-website.com --write-urls ./crawled-urls.txt");
|
|
108
173
|
logger.info("");
|
|
174
|
+
logger.info(" # Crawl only paths from a manifest file");
|
|
175
|
+
logger.info(" breakcheck snapshot --url https://my-website.com --url-file ./urls.txt");
|
|
176
|
+
logger.info("");
|
|
177
|
+
logger.info(" # Stream a generated manifest through stdin");
|
|
178
|
+
logger.info(" generate-url-list | breakcheck snapshot --url https://my-website.com --url-file -");
|
|
179
|
+
logger.info("");
|
|
109
180
|
logger.info(" # Use JSON logging for automation");
|
|
110
181
|
logger.info(" breakcheck snapshot --url https://my-website.com --json-logs");
|
|
182
|
+
logger.info("");
|
|
183
|
+
logger.info(" --config <file> Select a project configuration file");
|
|
184
|
+
logger.info(" --no-config Disable project configuration discovery");
|
|
185
|
+
}
|
|
186
|
+
function showInitHelp(logger) {
|
|
187
|
+
logger.info("⚙️ INIT COMMAND");
|
|
188
|
+
logger.info("===============");
|
|
189
|
+
logger.info("");
|
|
190
|
+
logger.info("Create a version-1 breakcheck.config.json without overwriting an existing file.");
|
|
191
|
+
logger.info("");
|
|
192
|
+
logger.info("Usage:");
|
|
193
|
+
logger.info(" breakcheck init [options]");
|
|
194
|
+
logger.info("");
|
|
195
|
+
logger.info("Options:");
|
|
196
|
+
logger.info(" -u, --url <url> Default base URL (optional)");
|
|
197
|
+
logger.info(" --storage-dir <directory> Artifact directory (optional)");
|
|
198
|
+
logger.info(" -r, --rules <directory> Default rules directory (optional)");
|
|
199
|
+
logger.info(" --config <destination-file> Destination file (default: breakcheck.config.json)");
|
|
200
|
+
logger.info(" --interactive Prompt for omitted values in a terminal");
|
|
201
|
+
logger.info(" -d, --depth <number> Default maximum crawl depth");
|
|
202
|
+
logger.info(" -c, --concurrency <number> Default concurrent requests");
|
|
203
|
+
logger.info(" -t, --type <type> Default crawler type");
|
|
111
204
|
}
|
|
112
205
|
function showCompareHelp(logger) {
|
|
113
206
|
logger.info("🔍 COMPARE COMMAND");
|
|
@@ -125,6 +218,9 @@ function showCompareHelp(logger) {
|
|
|
125
218
|
logger.info("Optional Options:");
|
|
126
219
|
logger.info(" -o, --output <name> A name for the comparison output directory (default: compare_default)");
|
|
127
220
|
logger.info(" -r, --rules <directory> Directory containing rules.breakcheck, relative to the current working directory (optional; omit for no rules)");
|
|
221
|
+
logger.info(" --no-rules Clear configured rules");
|
|
222
|
+
logger.info(" --config <file> Select a project configuration file");
|
|
223
|
+
logger.info(" --no-config Disable project configuration discovery");
|
|
128
224
|
logger.info(" --json-logs Output logs in JSON format");
|
|
129
225
|
logger.info(" --no-json-logs Output logs in pretty format (default)");
|
|
130
226
|
logger.info("");
|
|
@@ -149,8 +245,74 @@ function showCompareHelp(logger) {
|
|
|
149
245
|
logger.info(' css:img do: remove_attr attr:"srcset"');
|
|
150
246
|
logger.info(' css:.timestamp do: rewrite_content regex:"\\d{2}/\\d{2}/\\d{4}" replace:"DATE_STAMP"');
|
|
151
247
|
}
|
|
248
|
+
function showNewRuleHelp(logger) {
|
|
249
|
+
logger.info("✨ NEW RULE COMMAND");
|
|
250
|
+
logger.info("==================");
|
|
251
|
+
logger.info("");
|
|
252
|
+
logger.info("Creates a new ruleset directory containing rules.breakcheck.");
|
|
253
|
+
logger.info("");
|
|
254
|
+
logger.info("Usage:");
|
|
255
|
+
logger.info(" breakcheck new rule <name> [options]");
|
|
256
|
+
logger.info("");
|
|
257
|
+
logger.info("Options:");
|
|
258
|
+
logger.info(" -d, --directory <parent> Parent directory relative to the current directory");
|
|
259
|
+
logger.info(" --json-logs Output logs in JSON format");
|
|
260
|
+
logger.info(" --no-json-logs Output logs in pretty format (default)");
|
|
261
|
+
logger.info("");
|
|
262
|
+
logger.info("The name must be a single path-safe segment.");
|
|
263
|
+
logger.info("Existing rules.breakcheck files are never overwritten.");
|
|
264
|
+
logger.info("");
|
|
265
|
+
logger.info("Examples:");
|
|
266
|
+
logger.info(" breakcheck new rule my-rules");
|
|
267
|
+
logger.info(" breakcheck new rule dynamic --directory rules");
|
|
268
|
+
logger.info(" breakcheck compare --rules ./my-rules --before before --after after");
|
|
269
|
+
}
|
|
270
|
+
function showCompileHelp(logger) {
|
|
271
|
+
logger.info("🧩 COMPILE COMMAND");
|
|
272
|
+
logger.info("==================");
|
|
273
|
+
logger.info("");
|
|
274
|
+
logger.info("Compiles a rules.breakcheck DSL file to the intermediate JSON format.");
|
|
275
|
+
logger.info("");
|
|
276
|
+
logger.info("Usage:");
|
|
277
|
+
logger.info(" breakcheck compile <rules-directory>");
|
|
278
|
+
logger.info("");
|
|
279
|
+
logger.info("The directory must contain rules.breakcheck.");
|
|
280
|
+
logger.info("Relative paths resolve from the directory where breakcheck is run.");
|
|
281
|
+
logger.info("JSON is written to stdout with two-space indentation.");
|
|
282
|
+
logger.info("");
|
|
283
|
+
logger.info("Examples:");
|
|
284
|
+
logger.info(" breakcheck compile ./my-rules");
|
|
285
|
+
logger.info(" breakcheck compile ./my-rules > rules.json");
|
|
286
|
+
}
|
|
287
|
+
function showCleanHelp(logger) {
|
|
288
|
+
logger.info("🧹 CLEAN COMMAND");
|
|
289
|
+
logger.info("===============");
|
|
290
|
+
logger.info("");
|
|
291
|
+
logger.info("Deletes stored snapshots or comparisons.");
|
|
292
|
+
logger.info("");
|
|
293
|
+
logger.info("Usage:");
|
|
294
|
+
logger.info(" breakcheck clean snapshot [options]");
|
|
295
|
+
logger.info(" breakcheck clean comparison [options]");
|
|
296
|
+
logger.info("");
|
|
297
|
+
logger.info("Options:");
|
|
298
|
+
logger.info(" --name <name> Delete the named artifact");
|
|
299
|
+
logger.info(" --all Delete all artifacts of the selected type");
|
|
300
|
+
logger.info(" --force Skip confirmation; required for non-interactive use");
|
|
301
|
+
logger.info(" --json-logs Output logs in JSON format");
|
|
302
|
+
logger.info(" --no-json-logs Output logs in pretty format (default)");
|
|
303
|
+
logger.info(" --config <file> Select a project configuration file");
|
|
304
|
+
logger.info(" --no-config Disable project configuration discovery");
|
|
305
|
+
logger.info("");
|
|
306
|
+
logger.info("Provide either --name or --all. They cannot be combined.");
|
|
307
|
+
logger.info("When neither is provided in a terminal, Breakcheck prompts for a name.");
|
|
308
|
+
logger.info("");
|
|
309
|
+
logger.info("Examples:");
|
|
310
|
+
logger.info(" breakcheck clean snapshot --name before");
|
|
311
|
+
logger.info(" breakcheck clean comparison --name filtered --force");
|
|
312
|
+
logger.info(" breakcheck clean snapshot --all --force");
|
|
313
|
+
}
|
|
152
314
|
function showViewHelp(logger) {
|
|
153
|
-
logger.info("
|
|
315
|
+
logger.info("📺️ VIEW COMMAND");
|
|
154
316
|
logger.info("===============");
|
|
155
317
|
logger.info("");
|
|
156
318
|
logger.info("Starts a local web server to display the results of a comparison in a user-friendly interface.");
|
|
@@ -165,6 +327,8 @@ function showViewHelp(logger) {
|
|
|
165
327
|
logger.info(" -p, --port <number> The port to run the view server on (default: 8080; uses the next available port when omitted)");
|
|
166
328
|
logger.info(" --json-logs Output logs in JSON format");
|
|
167
329
|
logger.info(" --no-json-logs Output logs in pretty format (default)");
|
|
330
|
+
logger.info(" --config <file> Select a project configuration file");
|
|
331
|
+
logger.info(" --no-config Disable project configuration discovery");
|
|
168
332
|
logger.info("");
|
|
169
333
|
logger.info("Examples:");
|
|
170
334
|
logger.info(" # View default comparison");
|
|
@@ -186,7 +350,7 @@ function showViewHelp(logger) {
|
|
|
186
350
|
logger.info(" 4. Press Ctrl+C to stop the server");
|
|
187
351
|
}
|
|
188
352
|
function showListSnapshotsHelp(logger) {
|
|
189
|
-
logger.info("
|
|
353
|
+
logger.info("📜️ LIST-SNAPSHOTS COMMAND");
|
|
190
354
|
logger.info("=========================");
|
|
191
355
|
logger.info("");
|
|
192
356
|
logger.info("Lists all snapshots that have been saved locally.");
|
|
@@ -201,6 +365,8 @@ function showListSnapshotsHelp(logger) {
|
|
|
201
365
|
logger.info("Options:");
|
|
202
366
|
logger.info(" --json-logs Output logs in JSON format");
|
|
203
367
|
logger.info(" --no-json-logs Output logs in pretty format (default)");
|
|
368
|
+
logger.info(" --config <file> Select a project configuration file");
|
|
369
|
+
logger.info(" --no-config Disable project configuration discovery");
|
|
204
370
|
logger.info("");
|
|
205
371
|
logger.info("Output Format:");
|
|
206
372
|
logger.info(" The command outputs a table showing:");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC;KACtD,WAAW,CAAC,2CAA2C,CAAC;KACxD,QAAQ,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACrD,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;KACnD,MAAM,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,oCAAoC;IACpC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,eAAe,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,QAAQ,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;YAClC,KAAK,UAAU;gBACb,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,SAAS;gBACZ,eAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,MAAM;gBACT,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,gBAAgB,CAAC;YACtB,KAAK,KAAK;gBACR,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,MAAM,CAAC,KAAK,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;gBAChD,MAAM,CAAC,IAAI,CACT,6DAA6D,CAC9D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS,eAAe,CAAC,MAAW;IAClC,MAAM,CAAC,IAAI,CACT,2EAA2E,CAC5E,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,MAAM,CAAC,IAAI,CACT,iFAAiF,CAClF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CACT,iFAAiF,CAClF,CAAC;IACF,MAAM,CAAC,IAAI,CACT,kFAAkF,CACnF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CACT,oEAAoE,CACrE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CACT,sEAAsE,CACvE,CAAC;IACF,MAAM,CAAC,IAAI,CACT,yEAAyE,CAC1E,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CACT,sEAAsE,CACvE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAW;IACnC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CACT,gFAAgF,CACjF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CACT,mEAAmE,CACpE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CACT,uEAAuE,CACxE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CACT,0EAA0E,CAC3E,CAAC;IACF,MAAM,CAAC,IAAI,CACT,iEAAiE,CAClE,CAAC;IACF,MAAM,CAAC,IAAI,CACT,iEAAiE,CAClE,CAAC;IACF,MAAM,CAAC,IAAI,CACT,4FAA4F,CAC7F,CAAC;IACF,MAAM,CAAC,IAAI,CACT,8EAA8E,CAC/E,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CACT,qEAAqE,CACtE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,CACT,sGAAsG,CACvG,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CACT,mGAAmG,CACpG,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CACT,sEAAsE,CACvE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CACT,oFAAoF,CACrF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,eAAe,CAAC,MAAW;IAClC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CACT,uEAAuE,CACxE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CACT,iEAAiE,CAClE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CACT,qGAAqG,CACtG,CAAC;IACF,MAAM,CAAC,IAAI,CACT,8IAA8I,CAC/I,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CACT,qEAAqE,CACtE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CACT,wEAAwE,CACzE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,CACT,+FAA+F,CAChG,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CACT,2FAA2F,CAC5F,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,CACT,oFAAoF,CACrF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,MAAM,CAAC,IAAI,CACT,wGAAwG,CACzG,CAAC;IACF,MAAM,CAAC,IAAI,CACT,mFAAmF,CACpF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CACT,0FAA0F,CAC3F,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAW;IAC/B,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CACT,gGAAgG,CACjG,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1B,MAAM,CAAC,IAAI,CACT,8FAA8F,CAC/F,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,MAAM,CAAC,IAAI,CACT,8HAA8H,CAC/H,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CACT,qEAAqE,CACtE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAW;IACxC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACzE,MAAM,CAAC,IAAI,CACT,uEAAuE,CACxE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CACT,oEAAoE,CACrE,CAAC;IACF,MAAM,CAAC,IAAI,CACT,oEAAoE,CACrE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC7E,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC"}
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ProjectConfig } from "@cleaver/breakcheck-core";
|
|
2
|
+
import { InteractiveCommand } from "interactive-commander";
|
|
3
|
+
export interface InitCommandOptions {
|
|
4
|
+
config?: string;
|
|
5
|
+
url?: string;
|
|
6
|
+
storageDir?: string;
|
|
7
|
+
rules?: string;
|
|
8
|
+
interactive?: boolean;
|
|
9
|
+
type?: string;
|
|
10
|
+
depth?: string;
|
|
11
|
+
concurrency?: string;
|
|
12
|
+
jsonLogs?: boolean;
|
|
13
|
+
noJsonLogs?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface InitPromptAdapter {
|
|
16
|
+
isInteractive: boolean;
|
|
17
|
+
ask: (question: string) => Promise<string>;
|
|
18
|
+
}
|
|
19
|
+
export interface InitResult {
|
|
20
|
+
configPath: string;
|
|
21
|
+
storageDir: string;
|
|
22
|
+
config: ProjectConfig;
|
|
23
|
+
}
|
|
24
|
+
/** Builds and writes a new project configuration. */
|
|
25
|
+
export declare function runInit(options: InitCommandOptions, cwd?: string, prompts?: InitPromptAdapter, args?: readonly string[]): Promise<InitResult>;
|
|
26
|
+
export declare const initCommand: InteractiveCommand;
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { resolveProjectConfig, writeProjectConfig, } from "@cleaver/breakcheck-core";
|
|
2
|
+
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import { stdin, stdout } from "node:process";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { InteractiveCommand } from "interactive-commander";
|
|
6
|
+
import { configureLogger } from "../utils.js";
|
|
7
|
+
const DEFAULT_CRAWLER_TYPE = "cheerio";
|
|
8
|
+
const DEFAULT_MAX_DEPTH = 3;
|
|
9
|
+
const DEFAULT_MAX_CONCURRENCY = 5;
|
|
10
|
+
function createDefaultPrompts() {
|
|
11
|
+
const isInteractive = Boolean(stdin.isTTY && stdout.isTTY);
|
|
12
|
+
return {
|
|
13
|
+
isInteractive,
|
|
14
|
+
ask: async (question) => {
|
|
15
|
+
const readline = createInterface({ input: stdin, output: stdout });
|
|
16
|
+
try {
|
|
17
|
+
return await readline.question(question);
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
readline.close();
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function parseInteger(value, fallback, field, minimum) {
|
|
26
|
+
if (value === undefined || value.trim() === "")
|
|
27
|
+
return fallback;
|
|
28
|
+
const parsed = Number(value);
|
|
29
|
+
if (!Number.isInteger(parsed) || parsed < minimum) {
|
|
30
|
+
throw new Error(`${field} must be an integer greater than or equal to ${minimum}.`);
|
|
31
|
+
}
|
|
32
|
+
return parsed;
|
|
33
|
+
}
|
|
34
|
+
function validateCrawlerType(value) {
|
|
35
|
+
const crawlerType = value ?? DEFAULT_CRAWLER_TYPE;
|
|
36
|
+
if (crawlerType !== "cheerio" && crawlerType !== "playwright") {
|
|
37
|
+
throw new Error('Crawler type must be either "cheerio" or "playwright".');
|
|
38
|
+
}
|
|
39
|
+
return crawlerType;
|
|
40
|
+
}
|
|
41
|
+
function validateBaseUrl(value) {
|
|
42
|
+
if (value === undefined)
|
|
43
|
+
return;
|
|
44
|
+
const parsed = new URL(value);
|
|
45
|
+
if ((parsed.protocol !== "http:" && parsed.protocol !== "https:") ||
|
|
46
|
+
!parsed.hostname) {
|
|
47
|
+
throw new Error("Base URL must be a valid HTTP(S) URL.");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function relativeConfigPath(destination, target) {
|
|
51
|
+
const relative = path.relative(path.dirname(destination), path.resolve(target));
|
|
52
|
+
return relative === "" ? "." : relative;
|
|
53
|
+
}
|
|
54
|
+
function validateOptionalPath(value, field) {
|
|
55
|
+
if (value !== undefined && value.trim().length === 0) {
|
|
56
|
+
throw new Error(`${field} must not be empty.`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function optionFromArgs(args, option) {
|
|
60
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
61
|
+
const argument = args[index];
|
|
62
|
+
if (argument === option)
|
|
63
|
+
return args[index + 1];
|
|
64
|
+
if (argument.startsWith(`${option}=`)) {
|
|
65
|
+
return argument.slice(option.length + 1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
async function collectInteractiveOptions(options, prompts) {
|
|
71
|
+
if (!prompts.isInteractive) {
|
|
72
|
+
throw new Error("--interactive requires a terminal.");
|
|
73
|
+
}
|
|
74
|
+
const askOptional = async (value, question) => {
|
|
75
|
+
if (value !== undefined)
|
|
76
|
+
return value;
|
|
77
|
+
const answer = (await prompts.ask(question)).trim();
|
|
78
|
+
return answer === "" ? undefined : answer;
|
|
79
|
+
};
|
|
80
|
+
const askDefault = async (value, question, fallback) => {
|
|
81
|
+
if (value !== undefined)
|
|
82
|
+
return value;
|
|
83
|
+
const answer = (await prompts.ask(question)).trim();
|
|
84
|
+
return answer === "" ? fallback : answer;
|
|
85
|
+
};
|
|
86
|
+
let url = await askOptional(options.url, "Base URL (optional; press Enter to skip): ");
|
|
87
|
+
if (options.url !== undefined) {
|
|
88
|
+
validateBaseUrl(url);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
while (url !== undefined) {
|
|
92
|
+
try {
|
|
93
|
+
validateBaseUrl(url);
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
url = await askOptional(undefined, "Invalid URL. Base URL (optional; press Enter to skip): ");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const storageDir = await askOptional(options.storageDir, "Storage directory (optional; press Enter to keep legacy storage): ");
|
|
102
|
+
const rules = await askOptional(options.rules, "Rules directory (optional; press Enter to skip): ");
|
|
103
|
+
let type = await askDefault(options.type, "Crawler type (cheerio or playwright) [cheerio]: ", DEFAULT_CRAWLER_TYPE);
|
|
104
|
+
if (options.type !== undefined) {
|
|
105
|
+
validateCrawlerType(type);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
while (true) {
|
|
109
|
+
try {
|
|
110
|
+
validateCrawlerType(type);
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
type = await askDefault(undefined, "Invalid crawler type. Crawler type (cheerio or playwright) [cheerio]: ", DEFAULT_CRAWLER_TYPE);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
let depth = await askDefault(options.depth, "Maximum crawl depth [3]: ", "3");
|
|
119
|
+
if (options.depth !== undefined) {
|
|
120
|
+
parseInteger(depth, DEFAULT_MAX_DEPTH, "Depth", 0);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
while (true) {
|
|
124
|
+
try {
|
|
125
|
+
parseInteger(depth, DEFAULT_MAX_DEPTH, "Depth", 0);
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
depth = await askDefault(undefined, "Invalid depth. Maximum crawl depth [3]: ", "3");
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
let concurrency = await askDefault(options.concurrency, "Maximum concurrency [5]: ", "5");
|
|
134
|
+
if (options.concurrency !== undefined) {
|
|
135
|
+
parseInteger(concurrency, DEFAULT_MAX_CONCURRENCY, "Concurrency", 1);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
while (true) {
|
|
139
|
+
try {
|
|
140
|
+
parseInteger(concurrency, DEFAULT_MAX_CONCURRENCY, "Concurrency", 1);
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
concurrency = await askDefault(undefined, "Invalid concurrency. Maximum concurrency [5]: ", "5");
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
...options,
|
|
150
|
+
url,
|
|
151
|
+
storageDir,
|
|
152
|
+
rules,
|
|
153
|
+
type,
|
|
154
|
+
depth,
|
|
155
|
+
concurrency,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/** Builds and writes a new project configuration. */
|
|
159
|
+
export async function runInit(options, cwd = process.cwd(), prompts = createDefaultPrompts(), args = process.argv.slice(2)) {
|
|
160
|
+
const effectiveOptions = options.interactive
|
|
161
|
+
? await collectInteractiveOptions(options, prompts)
|
|
162
|
+
: options;
|
|
163
|
+
const absoluteCwd = path.resolve(cwd);
|
|
164
|
+
const destination = path.resolve(absoluteCwd, effectiveOptions.config ??
|
|
165
|
+
optionFromArgs(args, "--config") ??
|
|
166
|
+
"breakcheck.config.json");
|
|
167
|
+
const legacyConfig = await resolveProjectConfig({
|
|
168
|
+
cwd: absoluteCwd,
|
|
169
|
+
noConfig: true,
|
|
170
|
+
});
|
|
171
|
+
validateOptionalPath(effectiveOptions.storageDir, "--storage-dir");
|
|
172
|
+
validateOptionalPath(effectiveOptions.rules, "--rules");
|
|
173
|
+
const storageDir = path.resolve(absoluteCwd, effectiveOptions.storageDir ?? legacyConfig.storageDir);
|
|
174
|
+
const crawl = {
|
|
175
|
+
crawlerType: validateCrawlerType(effectiveOptions.type),
|
|
176
|
+
maxDepth: parseInteger(effectiveOptions.depth, DEFAULT_MAX_DEPTH, "Depth", 0),
|
|
177
|
+
maxConcurrency: parseInteger(effectiveOptions.concurrency, DEFAULT_MAX_CONCURRENCY, "Concurrency", 1),
|
|
178
|
+
includePatterns: [],
|
|
179
|
+
excludePatterns: [],
|
|
180
|
+
};
|
|
181
|
+
const config = {
|
|
182
|
+
version: 1,
|
|
183
|
+
...(effectiveOptions.url === undefined
|
|
184
|
+
? {}
|
|
185
|
+
: { baseUrl: effectiveOptions.url }),
|
|
186
|
+
storageDir: relativeConfigPath(destination, storageDir),
|
|
187
|
+
crawl,
|
|
188
|
+
...(effectiveOptions.rules === undefined
|
|
189
|
+
? {}
|
|
190
|
+
: {
|
|
191
|
+
comparison: {
|
|
192
|
+
rulesDir: relativeConfigPath(destination, path.resolve(absoluteCwd, effectiveOptions.rules)),
|
|
193
|
+
},
|
|
194
|
+
}),
|
|
195
|
+
};
|
|
196
|
+
await writeProjectConfig(destination, config);
|
|
197
|
+
return { configPath: destination, storageDir, config };
|
|
198
|
+
}
|
|
199
|
+
export const initCommand = new InteractiveCommand("init")
|
|
200
|
+
.description("Create a breakcheck.config.json project configuration")
|
|
201
|
+
.option("-u, --url <url>", "Default base URL to crawl")
|
|
202
|
+
.option("--storage-dir <directory>", "Artifact directory for snapshots and comparisons")
|
|
203
|
+
.option("-r, --rules <directory>", "Default directory containing rules.breakcheck")
|
|
204
|
+
.option("--config <destination-file>", "Destination configuration file")
|
|
205
|
+
.option("--interactive", "Prompt for omitted configuration values")
|
|
206
|
+
.option("-d, --depth <number>", "Default maximum crawl depth")
|
|
207
|
+
.option("-c, --concurrency <number>", "Default concurrent requests")
|
|
208
|
+
.option("-t, --type <type>", "Default crawler type (cheerio or playwright)")
|
|
209
|
+
.option("--json-logs", "Output logs in JSON format")
|
|
210
|
+
.option("--no-json-logs", "Output logs in pretty format (default)")
|
|
211
|
+
.action(async (options) => {
|
|
212
|
+
const logger = configureLogger(options);
|
|
213
|
+
try {
|
|
214
|
+
const result = await runInit(options);
|
|
215
|
+
logger.info(`✅ Created configuration: ${result.configPath}`);
|
|
216
|
+
logger.info(`📦 Artifact storage: ${result.storageDir}`);
|
|
217
|
+
logger.info(`Next: breakcheck snapshot${result.config.baseUrl ? "" : " --url <url>"}`);
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
logger.error({ err: error }, "❌ Error creating configuration");
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { listSnapshots } from "@cleaver/breakcheck-core";
|
|
2
2
|
import { InteractiveCommand } from "interactive-commander";
|
|
3
|
+
import { addConfigOptions, resolveCliProjectConfig } from "../config.js";
|
|
3
4
|
import { configureLogger } from "../utils.js";
|
|
4
|
-
export const listSnapshotsCommand = new InteractiveCommand("list-snapshots")
|
|
5
|
+
export const listSnapshotsCommand = addConfigOptions(new InteractiveCommand("list-snapshots")
|
|
5
6
|
.description("List all available snapshots")
|
|
6
7
|
.alias("lss")
|
|
7
8
|
.option("--json-logs", "Output logs in JSON format")
|
|
@@ -10,8 +11,11 @@ export const listSnapshotsCommand = new InteractiveCommand("list-snapshots")
|
|
|
10
11
|
// Configure logger based on options
|
|
11
12
|
const logger = configureLogger(options);
|
|
12
13
|
try {
|
|
14
|
+
const projectConfig = await resolveCliProjectConfig();
|
|
13
15
|
// Get snapshots
|
|
14
|
-
const snapshots = await listSnapshots(
|
|
16
|
+
const snapshots = await listSnapshots({
|
|
17
|
+
storageDir: projectConfig.storageDir,
|
|
18
|
+
});
|
|
15
19
|
// Display results
|
|
16
20
|
if (snapshots.length === 0) {
|
|
17
21
|
logger.info("No snapshots found");
|
|
@@ -38,5 +42,5 @@ export const listSnapshotsCommand = new InteractiveCommand("list-snapshots")
|
|
|
38
42
|
logger.error({ err: error }, "❌ Error listing snapshots");
|
|
39
43
|
process.exit(1);
|
|
40
44
|
}
|
|
41
|
-
});
|
|
45
|
+
}));
|
|
42
46
|
//# sourceMappingURL=list-snapshots.js.map
|