UNPKG

markdown-code

Version:

Keep code examples in Markdown synchronized with actual source files

82 lines (80 loc) 2.02 kB
import { format, hasErrors, hasIssues } from "./chunk-6OD27PGB.js"; import { checkMarkdownFiles, discoverCodeBlocks } from "./chunk-LFQPKNTT.js"; import "./chunk-7RDMPJH4.js"; import { configExists, getValidatedConfig, handleError } from "./chunk-LNSAPIWZ.js"; // src/commands/check.ts var command = "check"; var describe = "Check if markdown files are in sync (exit non-zero on mismatch)"; async function handleDiscoveryMode(config, configPath) { if (await configExists(configPath)) { return false; } const discovery = await discoverCodeBlocks( config.markdownGlob, config.excludeGlob ); if (discovery.totalCodeBlocks === 0) { return false; } const discoveryIssues = discovery.fileDetails.map( (file) => ({ filePath: file.filePath, issues: [ { line: 1, column: 1, type: "file-missing", message: `${file.codeBlocks} code blocks available (${file.languages.join(", ")})`, ruleId: "markdown-code/discovery" } ] }) ); const output = format(discoveryIssues); if (output) { console.log(output); console.log(""); console.log("To start managing these code blocks, run:"); console.log(" npx markdown-code init --extract"); return true; } return false; } var handler = async (argv) => { try { const config = await getValidatedConfig(argv); console.log("Checking markdown files..."); const result = await checkMarkdownFiles(config); let hasDiscoveryIssues = false; if (!hasIssues(result.fileIssues)) { hasDiscoveryIssues = await handleDiscoveryMode(config, argv.config); } const output = format(result.fileIssues); if (output) { console.log(output); } else if (!hasDiscoveryIssues) { console.log("All markdown files are in sync."); } if (hasErrors(result.fileIssues)) { process.exit(1); } } catch (error) { handleError(error); } }; export { command, describe, handler };