@kevinrabun/judges 3.81.0 → 3.82.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/CHANGELOG.md +13 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +63 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/finding-age-tracker.d.ts +8 -0
- package/dist/commands/finding-age-tracker.d.ts.map +1 -0
- package/dist/commands/finding-age-tracker.js +153 -0
- package/dist/commands/finding-age-tracker.js.map +1 -0
- package/dist/commands/finding-duplicate-rule.d.ts +5 -0
- package/dist/commands/finding-duplicate-rule.d.ts.map +1 -0
- package/dist/commands/finding-duplicate-rule.js +104 -0
- package/dist/commands/finding-duplicate-rule.js.map +1 -0
- package/dist/commands/finding-line-blame.d.ts +8 -0
- package/dist/commands/finding-line-blame.d.ts.map +1 -0
- package/dist/commands/finding-line-blame.js +133 -0
- package/dist/commands/finding-line-blame.js.map +1 -0
- package/dist/commands/finding-summary-digest.d.ts +8 -0
- package/dist/commands/finding-summary-digest.d.ts.map +1 -0
- package/dist/commands/finding-summary-digest.js +146 -0
- package/dist/commands/finding-summary-digest.js.map +1 -0
- package/dist/commands/review-code-owner.d.ts +8 -0
- package/dist/commands/review-code-owner.d.ts.map +1 -0
- package/dist/commands/review-code-owner.js +165 -0
- package/dist/commands/review-code-owner.js.map +1 -0
- package/dist/commands/review-export-pdf.d.ts +8 -0
- package/dist/commands/review-export-pdf.d.ts.map +1 -0
- package/dist/commands/review-export-pdf.js +132 -0
- package/dist/commands/review-export-pdf.js.map +1 -0
- package/dist/commands/review-parallel-files.d.ts +8 -0
- package/dist/commands/review-parallel-files.d.ts.map +1 -0
- package/dist/commands/review-parallel-files.js +135 -0
- package/dist/commands/review-parallel-files.js.map +1 -0
- package/dist/commands/review-scope-lock.d.ts +8 -0
- package/dist/commands/review-scope-lock.d.ts.map +1 -0
- package/dist/commands/review-scope-lock.js +139 -0
- package/dist/commands/review-scope-lock.js.map +1 -0
- package/dist/commands/review-watch-mode.d.ts +8 -0
- package/dist/commands/review-watch-mode.d.ts.map +1 -0
- package/dist/commands/review-watch-mode.js +133 -0
- package/dist/commands/review-watch-mode.js.map +1 -0
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review-watch-mode — Watch files for changes and auto-trigger reviews.
|
|
3
|
+
*
|
|
4
|
+
* Monitors specified directories and re-runs review when files change.
|
|
5
|
+
* Uses polling-based approach for cross-platform compatibility.
|
|
6
|
+
*/
|
|
7
|
+
export declare function runReviewWatchMode(argv: string[]): void;
|
|
8
|
+
//# sourceMappingURL=review-watch-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-watch-mode.d.ts","sourceRoot":"","sources":["../../src/commands/review-watch-mode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwEH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAwEvD"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review-watch-mode — Watch files for changes and auto-trigger reviews.
|
|
3
|
+
*
|
|
4
|
+
* Monitors specified directories and re-runs review when files change.
|
|
5
|
+
* Uses polling-based approach for cross-platform compatibility.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, statSync, readdirSync } from "fs";
|
|
8
|
+
import { join, extname } from "path";
|
|
9
|
+
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
10
|
+
const CODE_EXTENSIONS = new Set([
|
|
11
|
+
".ts",
|
|
12
|
+
".js",
|
|
13
|
+
".tsx",
|
|
14
|
+
".jsx",
|
|
15
|
+
".py",
|
|
16
|
+
".java",
|
|
17
|
+
".go",
|
|
18
|
+
".rs",
|
|
19
|
+
".cs",
|
|
20
|
+
".cpp",
|
|
21
|
+
".c",
|
|
22
|
+
".rb",
|
|
23
|
+
".php",
|
|
24
|
+
".swift",
|
|
25
|
+
".kt",
|
|
26
|
+
]);
|
|
27
|
+
function collectFiles(dir, extensions) {
|
|
28
|
+
const results = [];
|
|
29
|
+
if (!existsSync(dir))
|
|
30
|
+
return results;
|
|
31
|
+
function walk(d) {
|
|
32
|
+
const entries = readdirSync(d);
|
|
33
|
+
for (const entry of entries) {
|
|
34
|
+
const full = join(d, String(entry));
|
|
35
|
+
if (String(entry).startsWith(".") || String(entry) === "node_modules")
|
|
36
|
+
continue;
|
|
37
|
+
try {
|
|
38
|
+
const st = statSync(full);
|
|
39
|
+
if (st.isDirectory())
|
|
40
|
+
walk(full);
|
|
41
|
+
else if (extensions.has(extname(String(entry)))) {
|
|
42
|
+
results.push({ file: full, lastModified: st.mtimeMs });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
/* skip inaccessible */
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
walk(dir);
|
|
51
|
+
return results;
|
|
52
|
+
}
|
|
53
|
+
function detectChanges(prev, current) {
|
|
54
|
+
const prevMap = new Map(prev.map((s) => [s.file, s.lastModified]));
|
|
55
|
+
const changes = [];
|
|
56
|
+
for (const c of current) {
|
|
57
|
+
const prevTime = prevMap.get(c.file);
|
|
58
|
+
if (prevTime === undefined || prevTime < c.lastModified) {
|
|
59
|
+
changes.push(c.file);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return changes;
|
|
63
|
+
}
|
|
64
|
+
// ─── CLI ────────────────────────────────────────────────────────────────────
|
|
65
|
+
export function runReviewWatchMode(argv) {
|
|
66
|
+
const dirIdx = argv.indexOf("--dir");
|
|
67
|
+
const intervalIdx = argv.indexOf("--interval");
|
|
68
|
+
const extIdx = argv.indexOf("--ext");
|
|
69
|
+
const dryRunFlag = argv.includes("--dry-run");
|
|
70
|
+
const dir = dirIdx >= 0 ? argv[dirIdx + 1] : process.cwd();
|
|
71
|
+
const interval = intervalIdx >= 0 ? parseInt(argv[intervalIdx + 1], 10) : 5000;
|
|
72
|
+
const extFilter = extIdx >= 0 ? new Set(argv[extIdx + 1].split(",").map((e) => (e.startsWith(".") ? e : `.${e}`))) : CODE_EXTENSIONS;
|
|
73
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
74
|
+
console.log(`
|
|
75
|
+
judges review-watch-mode — Watch files and auto-trigger reviews
|
|
76
|
+
|
|
77
|
+
Usage:
|
|
78
|
+
judges review-watch-mode [--dir <path>] [--interval <ms>] [--ext <exts>]
|
|
79
|
+
[--dry-run]
|
|
80
|
+
|
|
81
|
+
Options:
|
|
82
|
+
--dir <path> Directory to watch (default: current directory)
|
|
83
|
+
--interval <ms> Poll interval in milliseconds (default: 5000)
|
|
84
|
+
--ext <exts> Comma-separated extensions to watch (default: common code)
|
|
85
|
+
--dry-run Show what would be reviewed without running
|
|
86
|
+
--help, -h Show this help
|
|
87
|
+
|
|
88
|
+
Press Ctrl+C to stop watching.
|
|
89
|
+
`);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (!existsSync(dir)) {
|
|
93
|
+
console.error(`Error: directory not found: ${dir}`);
|
|
94
|
+
process.exitCode = 1;
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
console.log(`\nWatch Mode Active`);
|
|
98
|
+
console.log("═".repeat(50));
|
|
99
|
+
console.log(`Directory: ${dir}`);
|
|
100
|
+
console.log(`Interval: ${interval}ms`);
|
|
101
|
+
console.log(`Extensions: ${[...extFilter].join(", ")}`);
|
|
102
|
+
console.log("═".repeat(50));
|
|
103
|
+
let state = collectFiles(dir, extFilter);
|
|
104
|
+
console.log(`Tracking ${state.length} files. Waiting for changes...`);
|
|
105
|
+
if (dryRunFlag) {
|
|
106
|
+
console.log("\n[DRY RUN] Would watch the following files:");
|
|
107
|
+
for (const s of state.slice(0, 20))
|
|
108
|
+
console.log(` ${s.file}`);
|
|
109
|
+
if (state.length > 20)
|
|
110
|
+
console.log(` ... and ${state.length - 20} more`);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const timer = setInterval(() => {
|
|
114
|
+
const current = collectFiles(dir, extFilter);
|
|
115
|
+
const changes = detectChanges(state, current);
|
|
116
|
+
if (changes.length > 0) {
|
|
117
|
+
const ts = new Date().toLocaleTimeString();
|
|
118
|
+
console.log(`\n[${ts}] ${changes.length} file(s) changed:`);
|
|
119
|
+
for (const f of changes.slice(0, 5))
|
|
120
|
+
console.log(` → ${f}`);
|
|
121
|
+
if (changes.length > 5)
|
|
122
|
+
console.log(` ... and ${changes.length - 5} more`);
|
|
123
|
+
console.log(" Run: judges eval --file <changed-file> to review");
|
|
124
|
+
state = current;
|
|
125
|
+
}
|
|
126
|
+
}, interval);
|
|
127
|
+
process.on("SIGINT", () => {
|
|
128
|
+
clearInterval(timer);
|
|
129
|
+
console.log("\nWatch mode stopped.");
|
|
130
|
+
process.exit(0);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=review-watch-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-watch-mode.js","sourceRoot":"","sources":["../../src/commands/review-watch-mode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"url": "https://github.com/kevinrabun/judges",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "3.
|
|
10
|
+
"version": "3.82.0",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "@kevinrabun/judges",
|
|
15
|
-
"version": "3.
|
|
15
|
+
"version": "3.82.0",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
}
|