kodevu 0.1.37 → 0.1.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/logger.js +3 -2
- package/src/report-generator.js +6 -5
- package/src/review-runner.js +3 -2
- package/src/utils.js +22 -0
package/package.json
CHANGED
package/src/logger.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { formatDate } from "./utils.js";
|
|
3
4
|
|
|
4
5
|
class Logger {
|
|
5
6
|
constructor() {
|
|
@@ -18,7 +19,7 @@ class Logger {
|
|
|
18
19
|
if (!fs.existsSync(config.logsDir)) {
|
|
19
20
|
fs.mkdirSync(config.logsDir, { recursive: true });
|
|
20
21
|
}
|
|
21
|
-
const date = new Date()
|
|
22
|
+
const date = formatDate(new Date()).split(" ")[0];
|
|
22
23
|
this.logFile = path.join(config.logsDir, `run-${date}.log`);
|
|
23
24
|
|
|
24
25
|
// Simple rotation: Clean up logs older than 7 days
|
|
@@ -57,7 +58,7 @@ class Logger {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
_log(level, message) {
|
|
60
|
-
const timestamp = new Date()
|
|
61
|
+
const timestamp = formatDate(new Date());
|
|
61
62
|
const logLine = `[${timestamp}] [${level}] ${message}`;
|
|
62
63
|
|
|
63
64
|
// Write to file
|
package/src/report-generator.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { formatDate } from "./utils.js";
|
|
1
2
|
export function getCoreReviewInstruction(lang) {
|
|
2
3
|
const lowLang = (lang || "").toLowerCase();
|
|
3
4
|
if (lowLang.startsWith("zh")) {
|
|
@@ -176,7 +177,7 @@ export function buildPrompt(config, backend, targetInfo, details, reviewDiffPayl
|
|
|
176
177
|
`${getPhrase("repoType", lang)}: ${backend.displayName}`,
|
|
177
178
|
`${getPhrase("changeId", lang)}: ${details.displayId}`,
|
|
178
179
|
`${getPhrase("author", lang)}: ${details.author}`,
|
|
179
|
-
`${getPhrase("date", lang)}: ${details.date || "unknown"}`,
|
|
180
|
+
`${getPhrase("date", lang)}: ${formatDate(details.date) || "unknown"}`,
|
|
180
181
|
`${getPhrase("changedFiles", lang)}:\n${fileList || "(none)"}`,
|
|
181
182
|
`${getPhrase("commitMessage", lang)}:\n${details.message || "(empty)"}`
|
|
182
183
|
].join("\n");
|
|
@@ -260,8 +261,8 @@ export function buildReport(config, backend, targetInfo, details, diffPayloads,
|
|
|
260
261
|
`- Target: \`${targetInfo.targetDisplay || config.target}\``,
|
|
261
262
|
`- Change ID: \`${details.displayId}\``,
|
|
262
263
|
`- Author: \`${details.author}\``,
|
|
263
|
-
`- Commit Date: \`${details.date
|
|
264
|
-
`- Generated At: \`${new Date()
|
|
264
|
+
`- Commit Date: \`${formatDate(details.date)}\``,
|
|
265
|
+
`- Generated At: \`${formatDate(new Date())}\``,
|
|
265
266
|
`- Reviewer: \`${reviewer.displayName}\``,
|
|
266
267
|
`- Reviewer Exit Code: \`${reviewerResult.code}\``,
|
|
267
268
|
`- Reviewer Timed Out: \`${reviewerResult.timedOut ? "yes" : "no"}\``,
|
|
@@ -309,8 +310,8 @@ export function buildJsonReport(config, backend, targetInfo, details, diffPayloa
|
|
|
309
310
|
target: targetInfo.targetDisplay || config.target,
|
|
310
311
|
changeId: details.displayId,
|
|
311
312
|
author: details.author,
|
|
312
|
-
commitDate: details.date
|
|
313
|
-
generatedAt: new Date()
|
|
313
|
+
commitDate: formatDate(details.date),
|
|
314
|
+
generatedAt: formatDate(new Date()),
|
|
314
315
|
reviewer: {
|
|
315
316
|
name: reviewer.displayName,
|
|
316
317
|
exitCode: reviewerResult.code,
|
package/src/review-runner.js
CHANGED
|
@@ -5,7 +5,8 @@ import { logger } from "./logger.js";
|
|
|
5
5
|
import {
|
|
6
6
|
ensureDir,
|
|
7
7
|
writeTextFile,
|
|
8
|
-
writeJsonFile
|
|
8
|
+
writeJsonFile,
|
|
9
|
+
formatDate
|
|
9
10
|
} from "./utils.js";
|
|
10
11
|
import {
|
|
11
12
|
shouldWriteFormat,
|
|
@@ -42,7 +43,7 @@ async function reviewChange(config, backend, targetInfo, changeId, progress) {
|
|
|
42
43
|
repositoryType: backend.displayName,
|
|
43
44
|
target: targetInfo.targetDisplay || config.target,
|
|
44
45
|
changeId: details.displayId,
|
|
45
|
-
generatedAt: new Date()
|
|
46
|
+
generatedAt: formatDate(new Date()),
|
|
46
47
|
skipped: true,
|
|
47
48
|
message: "No file changes were captured for this change under the configured target."
|
|
48
49
|
});
|
package/src/utils.js
CHANGED
|
@@ -32,3 +32,25 @@ export function countLines(text) {
|
|
|
32
32
|
}
|
|
33
33
|
return text.split(/\r?\n/).length;
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
export function formatDate(dateInput) {
|
|
37
|
+
if (!dateInput || dateInput === "unknown") return "unknown";
|
|
38
|
+
const d = new Date(dateInput);
|
|
39
|
+
if (isNaN(d.getTime())) return dateInput;
|
|
40
|
+
|
|
41
|
+
const offsetMinutes = -d.getTimezoneOffset();
|
|
42
|
+
const offsetHours = Math.floor(Math.abs(offsetMinutes) / 60);
|
|
43
|
+
const offsetMins = Math.abs(offsetMinutes) % 60;
|
|
44
|
+
const sign = offsetMinutes >= 0 ? "+" : "-";
|
|
45
|
+
|
|
46
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
47
|
+
const year = d.getFullYear();
|
|
48
|
+
const month = pad(d.getMonth() + 1);
|
|
49
|
+
const day = pad(d.getDate());
|
|
50
|
+
const hours = pad(d.getHours());
|
|
51
|
+
const minutes = pad(d.getMinutes());
|
|
52
|
+
const seconds = pad(d.getSeconds());
|
|
53
|
+
const offset = `${sign}${pad(offsetHours)}:${pad(offsetMins)}`;
|
|
54
|
+
|
|
55
|
+
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds} ${offset}`;
|
|
56
|
+
}
|