-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidator.js
More file actions
67 lines (55 loc) · 2.04 KB
/
validator.js
File metadata and controls
67 lines (55 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const { readFile } = require("./reader")
const { verifyLine } = require("./verifiers")
const { saveReport } = require("./report")
const CONFIG = require("./config")
const args = process.argv.slice(2)
if (args.length === 0) {
console.error("❌ You must provide a file name.")
process.exit(1)
}
const fileName = args[0]
async function processFile() {
const lines = await readFile(fileName)
if (lines.length === 0) {
console.error("❌ The file is empty or could not be read.")
process.exit(1)
}
const summary = {
file: fileName,
separator: CONFIG.SEPARATOR,
totalLines: lines.length,
validLines: 0,
errorLines: 0,
warnings: 0,
criticalErrors: 0,
uniqueErrors: new Set(),
errors: [],
}
lines.forEach((line, index) => {
const result = verifyLine(line)
if (result.errors) {
summary.errorLines++
summary.errors.push({ line: index + 1, details: result.errors, severity: result.severity })
summary.criticalErrors += result.criticalCount
summary.warnings += result.warningCount
result.errors.forEach(error => summary.uniqueErrors.add(error))
} else {
summary.validLines++
}
})
summary.uniqueErrors = Array.from(summary.uniqueErrors)
console.log(`📂 Analizing file: ${fileName} (Separator: ${CONFIG.SEPARATOR})`)
console.log(`Total lines: ${summary.totalLines}`)
console.log(`Valid lines: ${summary.validLines}`)
console.log(`Lines with errors: ${summary.errorLines}`)
console.log(`Warnings detected: ${summary.warnings}`)
console.log(`Critical errors detected: ${summary.criticalErrors}`)
if (summary.errors.length > 0) {
console.log("\nDetected errors:")
summary.errors.forEach(error =>
console.log(`- Line ${error.line}: ${error.details.join(", ")} [${error.severity}]`)
)
}
await saveReport(summary)
}
processFile()