kodevu 0.1.67 → 0.1.68

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/logger.js +21 -10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kodevu",
3
- "version": "0.1.67",
3
+ "version": "0.1.68",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Poll SVN revisions or Git commits, send each change diff to a reviewer CLI, and write configurable review reports.",
package/src/logger.js CHANGED
@@ -78,7 +78,7 @@ class Logger {
78
78
  const date = formatDate(new Date()).split(" ")[0];
79
79
  this.logFile = path.join(config.logsDir, `run-${date}.log`);
80
80
 
81
- // Simple rotation: Clean up logs older than 7 days
81
+ // Simple rotation: Keep the most recent 7 log files
82
82
  this.#cleanupOldLogs(config.logsDir);
83
83
  this.initialized = true;
84
84
  } catch (err) {
@@ -161,21 +161,32 @@ class Logger {
161
161
  ].join("-");
162
162
  }
163
163
 
164
-
165
-
166
164
  #cleanupOldLogs(logsDir) {
167
165
  try {
168
166
  const files = fs.readdirSync(logsDir);
169
- const now = Date.now();
170
- const MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days
171
167
 
172
- for (const file of files) {
173
- if (file.startsWith("run-") && file.endsWith(".log")) {
168
+ const logFiles = files
169
+ .filter((file) => file.startsWith("run-") && file.endsWith(".log"))
170
+ .map((file) => {
174
171
  const filePath = path.join(logsDir, file);
175
- const stats = fs.statSync(filePath);
176
- if (now - stats.mtimeMs > MAX_AGE_MS) {
177
- fs.unlinkSync(filePath);
172
+ try {
173
+ const stats = fs.statSync(filePath);
174
+ return { file, path: filePath, mtime: stats.mtimeMs };
175
+ } catch {
176
+ return null;
178
177
  }
178
+ })
179
+ .filter(Boolean)
180
+ .sort((a, b) => b.mtime - a.mtime);
181
+
182
+ const KEEP_COUNT = 7;
183
+ const toRemove = logFiles.slice(KEEP_COUNT);
184
+
185
+ for (const entry of toRemove) {
186
+ try {
187
+ fs.unlinkSync(entry.path);
188
+ } catch {
189
+ // Ignore individual deletion errors
179
190
  }
180
191
  }
181
192
  } catch (err) {