Files
FEDEO/docs-site/scripts/sync-content.mjs
florianfederspiel 8c458f4953
All checks were successful
Build and Push Docker Images / verify-docs-sync (push) Successful in 9s
Build and Push Docker Images / build-backend (push) Successful in 14s
Build and Push Docker Images / build-frontend (push) Successful in 13s
Build and Push Docker Images / build-docs (push) Successful in 1m47s
Ersetze Docusaurus vollständig durch Nuxt-Content-Docs-App
2026-04-22 18:16:00 +02:00

63 lines
1.5 KiB
JavaScript
Executable File

#!/usr/bin/env node
import { promises as fs } from 'node:fs'
import path from 'node:path'
const ROOT = process.cwd()
const DOCS_SOURCE = path.resolve(ROOT, '../docs')
const CONTENT_TARGET = path.resolve(ROOT, 'content')
async function ensureDir(dirPath) {
await fs.mkdir(dirPath, { recursive: true })
}
async function clearDir(dirPath) {
await fs.rm(dirPath, { recursive: true, force: true })
await ensureDir(dirPath)
}
async function walk(dir) {
const entries = await fs.readdir(dir, { withFileTypes: true })
const out = []
for (const entry of entries) {
const full = path.join(dir, entry.name)
if (entry.isDirectory()) {
out.push(...(await walk(full)))
} else if (entry.isFile() && entry.name.endsWith('.md')) {
out.push(full)
}
}
return out
}
function toPosix(p) {
return p.split(path.sep).join('/')
}
async function main() {
await clearDir(CONTENT_TARGET)
const files = await walk(DOCS_SOURCE)
for (const file of files) {
const rel = toPosix(path.relative(DOCS_SOURCE, file))
let targetRel = rel
if (rel === 'README.md') {
targetRel = 'index.md'
} else if (rel.endsWith('/README.md')) {
targetRel = `${rel.slice(0, -'/README.md'.length)}/index.md`
}
const target = path.join(CONTENT_TARGET, targetRel)
await ensureDir(path.dirname(target))
await fs.copyFile(file, target)
}
console.log(`Nuxt-Content Synchronisierung abgeschlossen: ${files.length} Dateien`)
}
main().catch((err) => {
console.error('Fehler bei der Content-Synchronisierung', err)
process.exit(1)
})