UNPKG

reqover

Version:

Reqover is language agnostic tool that gives a picture about coverage of APIs based on Open API (Swagger).

59 lines (52 loc) 1.67 kB
const request = require("superagent"); const fs = require("fs"); const admZip = require("adm-zip"); const path = require("path"); const ejs = require("ejs"); const href = "https://github.com/reqover/reqover-report/releases/download"; const name = "report.zip"; const reportDir = ".reqover"; function downloadReport(version) { const reportZipFile = `${reportDir}/${name}`; if (!fs.existsSync(reportDir)) { fs.mkdirSync(reportDir, { recursive: true }); } if (fs.existsSync(reportZipFile)) { unzip(reportZipFile, reportDir); return; } request .get(`${href}/${version}/${name}`) .on("error", function (error) { console.log(error); }) .pipe(fs.createWriteStream(reportZipFile)) .on("finish", function () { console.log("Download is finished to " + reportDir); setTimeout(() => { unzip(reportZipFile, reportDir); }, 1000); }); } function unzip(zipFile, outputDir) { const zip = new admZip(zipFile); zip.extractAllTo(outputDir, false, true); } function copyData(source, dir, target) { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } fs.copyFileSync(source, path.join(dir, target)); } async function generateReport(dataPath, dir) { const data = JSON.parse(fs.readFileSync(dataPath)); const report = await ejs.renderFile(__dirname + "/template/swagger.ejs", { data, }); if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } fs.writeFileSync(`${dir}/index.html`, report); fs.cpSync(__dirname + "/template/assets", `${dir}/assets`, { recursive: true }); } module.exports = { downloadReport, copyData, generateReport };