markdown-code
Version:
Keep code examples in Markdown synchronized with actual source files
82 lines (80 loc) • 2.02 kB
JavaScript
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
};