| import fs from "fs"; |
| import path from "path"; |
| import { DEFAULT_LANG, isValidLang } from "@/constants/languages"; |
|
|
| const CONTENT_ROOT = path.join(process.cwd(), "content"); |
|
|
| function readContentFile(lang, slugPath) { |
| const filePath = path.join(CONTENT_ROOT, lang, `${slugPath}.md`); |
| if (!fs.existsSync(filePath)) return null; |
| return fs.readFileSync(filePath, "utf-8"); |
| } |
|
|
| |
| export function loadContent(lang, slug = "index") { |
| const safeLang = isValidLang(lang) ? lang : DEFAULT_LANG; |
| const slugPath = Array.isArray(slug) ? slug.join("/") : slug; |
| return readContentFile(safeLang, slugPath) || readContentFile(DEFAULT_LANG, slugPath); |
| } |
|
|
| |
| export function getAllSlugs(lang = DEFAULT_LANG) { |
| const baseDir = path.join(CONTENT_ROOT, lang); |
| if (!fs.existsSync(baseDir)) return []; |
|
|
| const walk = (dir, basePath = "") => { |
| const files = fs.readdirSync(dir); |
| let results = []; |
| files.forEach(file => { |
| const full = path.join(dir, file); |
| const stat = fs.statSync(full); |
| if (stat.isDirectory()) { |
| results = results.concat(walk(full, path.join(basePath, file))); |
| } else if (file.endsWith(".md") && file !== "index.md") { |
| const slug = path.join(basePath, file.replace(/\.md$/, "")); |
| results.push(slug.split(path.sep)); |
| } |
| }); |
| return results; |
| }; |
|
|
| return walk(baseDir); |
| } |
|
|