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
63 lines
1.5 KiB
JavaScript
Executable File
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)
|
|
})
|