Allow markdown and python files to be referenced direclty and add it to

the docs

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
This commit is contained in:
Francisco Javier Arceo 2025-10-21 10:14:15 -04:00
parent 7ab63068f8
commit 9ccd2e4e9b
11 changed files with 493 additions and 1145 deletions

View file

@ -47,6 +47,57 @@ function trackFileUsage(filePath) {
}
}
// Filter content based on file type and options
function filterContent(content, filePath) {
let lines = content.split('\n');
// Skip copyright header for Python files
if (filePath.endsWith('.py')) {
// Read the license header file
const licenseHeaderPath = path.join(repoRoot, 'docs', 'license_header.txt');
if (fs.existsSync(licenseHeaderPath)) {
try {
const licenseText = fs.readFileSync(licenseHeaderPath, 'utf8');
const licenseLines = licenseText.trim().split('\n');
// Check if file starts with the license header (accounting for # comments)
if (lines.length >= licenseLines.length) {
let matches = true;
for (let i = 0; i < licenseLines.length; i++) {
const codeLine = lines[i]?.replace(/^#\s*/, '').trim();
const licenseLine = licenseLines[i]?.trim();
if (codeLine !== licenseLine) {
matches = false;
break;
}
}
if (matches) {
// Skip the license header and any trailing empty lines
let skipTo = licenseLines.length;
while (skipTo < lines.length && lines[skipTo].trim() === '') {
skipTo++;
}
lines = lines.slice(skipTo);
}
}
} catch (error) {
console.warn(`Could not read license header, skipping filtering for ${filePath}`);
}
}
}
// Trim empty lines from start and end
while (lines.length > 0 && lines[0].trim() === '') {
lines.shift();
}
while (lines.length > 0 && lines[lines.length - 1].trim() === '') {
lines.pop();
}
return lines.join('\n');
}
// Sync a file from repo root to static directory
function syncFile(filePath) {
const sourcePath = path.join(repoRoot, filePath);
@ -61,7 +112,8 @@ function syncFile(filePath) {
try {
if (fs.existsSync(sourcePath)) {
const content = fs.readFileSync(sourcePath, 'utf8');
fs.writeFileSync(destPath, content);
const filteredContent = filterContent(content, filePath);
fs.writeFileSync(destPath, filteredContent);
console.log(`✅ Synced ${filePath}`);
trackFileUsage(filePath);
return true;