2024-03-20 15:11:46 +00:00
|
|
|
import Ajv from 'ajv';
|
|
|
|
import fs from 'fs';
|
|
|
|
import path from 'path';
|
2024-04-05 14:03:29 +00:00
|
|
|
const ajv = new Ajv({verbose: true});
|
|
|
|
// Load and add the service schema
|
|
|
|
const serviceSchema = JSON.parse(fs.readFileSync('./src/content/schema-services.json', 'utf-8'));
|
|
|
|
ajv.addSchema(serviceSchema, 'serviceSchema');
|
2024-03-20 15:11:46 +00:00
|
|
|
|
2024-04-05 14:03:29 +00:00
|
|
|
// Load and add the category schema
|
|
|
|
const categorySchema = JSON.parse(fs.readFileSync('./src/content/schema-categories.json', 'utf-8'));
|
|
|
|
ajv.addSchema(categorySchema, 'categorySchema');
|
2024-03-20 15:11:46 +00:00
|
|
|
|
2024-04-05 14:03:29 +00:00
|
|
|
// Compile the category schema validator
|
|
|
|
// const validate = ajv.getSchema('categorySchema');
|
2024-03-20 15:11:46 +00:00
|
|
|
|
2024-04-05 13:00:47 +00:00
|
|
|
/**
|
|
|
|
* @param {string} filePath
|
|
|
|
*/
|
2024-03-20 15:11:46 +00:00
|
|
|
function validateFile(filePath) {
|
|
|
|
const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
2024-04-05 14:03:29 +00:00
|
|
|
const validate = ajv.compile(categorySchema);
|
2024-03-20 15:11:46 +00:00
|
|
|
const valid = validate(data);
|
|
|
|
if (!valid) {
|
|
|
|
throw new Error(`Invalid service data in ${filePath}: ${JSON.stringify(validate.errors)}`);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-04-05 13:00:47 +00:00
|
|
|
/**
|
|
|
|
* @param {string} directory
|
|
|
|
*/
|
2024-03-20 15:11:46 +00:00
|
|
|
function scanDirectory(directory) {
|
|
|
|
const files = fs.readdirSync(directory);
|
|
|
|
for (const file of files) {
|
|
|
|
const filePath = path.join(directory, file);
|
|
|
|
const stat = fs.statSync(filePath);
|
|
|
|
if (stat.isDirectory()) {
|
|
|
|
scanDirectory(filePath);
|
|
|
|
} else if (path.extname(filePath) === '.json') {
|
|
|
|
validateFile(filePath);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function validateServices() {
|
|
|
|
try {
|
2024-04-05 13:00:47 +00:00
|
|
|
scanDirectory('./src/content/services');
|
2024-03-20 15:11:46 +00:00
|
|
|
console.log('All services validated successfully!');
|
|
|
|
} catch (error) {
|
|
|
|
console.error(`Error validating services: ${error}`);
|
2024-04-05 14:03:29 +00:00
|
|
|
console.log(ajv.errors);
|
2024-03-20 15:11:46 +00:00
|
|
|
process.exit(1); // Exit with non-zero code to signal failure
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
validateServices();
|