Added automatically generating banner cards for each md page file that has
--- banner_title: "..." banner_description: "..." ---
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import matter from 'gray-matter'; // Install 'gray-matter' for parsing frontmatter
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
console.log('Starting composer.js execution');
|
||||
|
||||
const projects = ['flash', 'mobot', 'serverlibraries'];
|
||||
const sidebarConfig = {};
|
||||
const pageMetadata = {};
|
||||
|
||||
projects.forEach((project) => {
|
||||
const projectPath = path.resolve(__dirname, `../${project}`);
|
||||
const sidebarPath = path.join(projectPath, 'config/sidebar.json');
|
||||
|
||||
console.log(`Checking for sidebar.json in ${project}`);
|
||||
if (fs.existsSync(sidebarPath)) {
|
||||
console.log(`Found sidebar.json in ${project}`);
|
||||
const sidebar = JSON.parse(fs.readFileSync(sidebarPath, 'utf-8'));
|
||||
Object.assign(sidebarConfig, sidebar);
|
||||
} else {
|
||||
console.log(`sidebar.json not found in ${project}`);
|
||||
}
|
||||
|
||||
// Process Markdown files
|
||||
const files = fs.readdirSync(projectPath).filter((file) => file.endsWith('.md'));
|
||||
files.forEach((file) => {
|
||||
const filePath = path.join(projectPath, file);
|
||||
const content = fs.readFileSync(filePath, 'utf-8');
|
||||
const { data: frontmatter } = matter(content);
|
||||
const metadataKey = `/${project}/${file.replace('.md', '')}`;
|
||||
|
||||
pageMetadata[metadataKey] = {
|
||||
title: frontmatter.ogTitle || frontmatter.title || file.replace('.md', ''),
|
||||
description: frontmatter.ogDescription || '',
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
export { sidebarConfig, pageMetadata };
|
||||
Reference in New Issue
Block a user