#!/usr/bin/env node const fs = require("fs"); const jsyaml = require("js-yaml"); const SwaggerParser = require("swagger-parser"); const ExampleValidator = require("openapi-examples-validator"); (async () => { // Iterate through the changed files, passed in the arguments. // The two first arguments are the call to the Node interpreter and this // script, hence the starting point at 2. for (const file of process.argv.slice(2)) { try { if ( jsyaml.safeLoad(await fs.promises.readFile(file, "utf8"), { filename: file, }).openapi !== undefined ) { await SwaggerParser.validate(file); const res = await ExampleValidator.validateFile(file); if (!res.valid) { for (const error of res.errors) { console.error(error); } process.exitCode = 1; } } } catch (error) { if (error instanceof jsyaml.YAMLException) { console.error(error.message); } else if (error instanceof SyntaxError) { console.error(`${file}: ${error.message}`); } else { throw error; } process.exitCode = 1; } } })().catch((error) => { console.error(error); process.exit(1); });