#!/usr/bin/env node const fs = require("fs"); const glob = require("glob"); const chalk = require("chalk"); init(); function verifyDocumentationLinks(files) { let missing = 0; for (const file of files) { const text = fs.readFileSync(file, "utf-8"); const regex = /docsUrl\((?:[\s\n]+)?"([^"]+)"/g; let match; while ((match = regex.exec(text))) { const [_, page, anchor] = match; const path = `./docs/${page}.md`; if (fs.existsSync(path)) { console.log(`Exists: ${path}`); } else { console.log(chalk.red(`Missing: ${path}`)); missing++; } } } if (missing > 0) { process.exit(missing); } } function verifyAllFiles() { glob("./{enterprise/,}frontend/src/**/*.{js,jsx,ts,tsx}", (err, files) => { if (err) { console.error(err); process.exit(1); } verifyDocumentationLinks(files); }); } function init() { const stagedFiles = process.argv.slice(2); return stagedFiles.length ? verifyDocumentationLinks(stagedFiles) : verifyAllFiles(); }