Merge commit '3c60637c1a27da8ba66888de518d58d5707801f2' as 'repos/effect-smol'
This commit is contained in:
64
repos/effect-smol/scripts/docs.mjs
Normal file
64
repos/effect-smol/scripts/docs.mjs
Normal file
@@ -0,0 +1,64 @@
|
||||
import * as Fs from "node:fs"
|
||||
import * as Path from "node:path"
|
||||
|
||||
function packages() {
|
||||
return Fs.readdirSync("packages")
|
||||
.filter((_) => Fs.existsSync(Path.join("packages", _, "docs/modules")))
|
||||
}
|
||||
|
||||
function pkgName(pkg) {
|
||||
const packageJson = Fs.readFileSync(
|
||||
Path.join("packages", pkg, "package.json")
|
||||
)
|
||||
return JSON.parse(packageJson).name
|
||||
}
|
||||
|
||||
function copyFiles(pkg) {
|
||||
const name = pkgName(pkg)
|
||||
const docs = Path.join("packages", pkg, "docs/modules")
|
||||
const dest = Path.join("docs", pkg)
|
||||
const files = Fs.readdirSync(docs, { withFileTypes: true })
|
||||
|
||||
function handleFiles(root, files) {
|
||||
for (const file of files) {
|
||||
const path = Path.join(docs, root, file.name)
|
||||
const destPath = Path.join(dest, root, file.name)
|
||||
|
||||
if (file.isDirectory()) {
|
||||
Fs.mkdirSync(destPath, { recursive: true })
|
||||
handleFiles(Path.join(root, file.name), Fs.readdirSync(path, { withFileTypes: true }))
|
||||
continue
|
||||
}
|
||||
|
||||
const content = Fs.readFileSync(path, "utf8").replace(
|
||||
/^parent: Modules$/m,
|
||||
`parent: "${name}"`
|
||||
)
|
||||
Fs.writeFileSync(destPath, content)
|
||||
}
|
||||
}
|
||||
|
||||
Fs.rmSync(dest, { recursive: true, force: true })
|
||||
Fs.mkdirSync(dest, { recursive: true })
|
||||
handleFiles("", files)
|
||||
}
|
||||
|
||||
function generateIndex(pkg, order) {
|
||||
const name = pkgName(pkg)
|
||||
const content = `---
|
||||
title: "${name}"
|
||||
has_children: true
|
||||
permalink: /docs/${pkg}
|
||||
nav_order: ${order}
|
||||
---
|
||||
`
|
||||
|
||||
Fs.writeFileSync(Path.join("docs", pkg, "index.md"), content)
|
||||
}
|
||||
|
||||
packages().forEach((pkg, i) => {
|
||||
Fs.rmSync(Path.join("docs", pkg), { recursive: true, force: true })
|
||||
Fs.mkdirSync(Path.join("docs", pkg), { recursive: true })
|
||||
copyFiles(pkg)
|
||||
generateIndex(pkg, i + 2)
|
||||
})
|
||||
Reference in New Issue
Block a user