forked from PawiX25/YSWS-Catalog
-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathvalidateDates.js
34 lines (32 loc) · 1001 Bytes
/
validateDates.js
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
const fs = require('fs');
const jsyaml = require('js-yaml');
function isValidDate(date) {
return date instanceof Date && !isNaN(date.getTime());
}
try {
const fileContent = fs.readFileSync('data.yml', 'utf8');
const data = jsyaml.load(fileContent);
let invalidDates = [];
for (let category in data) {
if (Array.isArray(data[category])) {
data[category].forEach(program => {
if (program.deadline) {
const d = new Date(program.deadline);
if (!isValidDate(d)) {
invalidDates.push({ name: program.name, deadline: program.deadline });
}
}
});
}
}
if (invalidDates.length) {
console.warn('Found invalid dates in data.yml:');
console.warn(invalidDates);
process.exit(1);
} else {
console.log('All dates are valid.');
}
} catch (err) {
console.error(err);
process.exit(1);
}