| /** | |
| * This retrieves all files located on the examples folder, then iterates | |
| * over each file and validates it conforms to the json schema defined on | |
| * the index.js file. | |
| * If one or more of the files is not well formed, it calls the failed | |
| * method, listing all files that didn't pass the validation and | |
| * their errors. | |
| */ | |
| const fs = require('fs'); | |
| const core = require('@actions/core'); | |
| const github = require('@actions/github'); | |
| const validate = require('./index.js'); | |
| const examplesDirectory = '../examples/' | |
| let totalFiles = 0; | |
| let failedFiles = []; | |
| function validateFile(error, data, fileName) { | |
| try { | |
| if (error) { | |
| throw error; | |
| } else { | |
| const schemaValidation = validate(JSON.parse(data)); | |
| if (schemaValidation?.errors.length) { | |
| failedFiles.push({ | |
| fileName, | |
| error: schemaValidation.errors, | |
| }) | |
| } else { | |
| } | |
| } | |
| } catch (error) { | |
| failedFiles.push({ | |
| fileName, | |
| error, | |
| }) | |
| } | |
| fileProcessed() | |
| } | |
| function fileProcessed() { | |
| totalFiles -= 1; | |
| if (totalFiles === 0) { | |
| if (failedFiles.length) { | |
| core.setFailed(failedFiles); | |
| } else { | |
| console.log('NO ERRORS'); | |
| } | |
| } | |
| } | |
| fs.readdir(examplesDirectory, (err, files) => { | |
| files.forEach(fileName => { | |
| if (fileName.indexOf('.json') !== -1) { | |
| totalFiles += 1; | |
| fs.readFile(examplesDirectory + fileName, 'utf8', (error, data) => validateFile(error, data, fileName)); | |
| } | |
| }); | |
| }); |