mirror of
https://github.com/netbirdio/docs.git
synced 2026-04-15 23:16:36 +00:00
Fixing Edit on GitHub Links (#627)
This commit is contained in:
42
scripts/generate-github-routes.mjs
Normal file
42
scripts/generate-github-routes.mjs
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Generates src/lib/edit-on-github-routes.js by scanning src/pages for index.mdx.
|
||||
* Used by Layout.jsx so "Edit on GitHub" links point to .../index.mdx for those routes.
|
||||
* Run automatically with dev and build.
|
||||
*/
|
||||
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import { fileURLToPath } from 'url'
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
const ROOT = path.join(__dirname, '..')
|
||||
const PAGES_DIR = path.join(ROOT, 'src/pages')
|
||||
const OUT_PATH = path.join(ROOT, 'src/lib/edit-on-github-routes.js')
|
||||
|
||||
function findIndexMdxRoutes(dir, basePath = '') {
|
||||
const entries = fs.readdirSync(dir, { withFileTypes: true })
|
||||
const routes = []
|
||||
for (const e of entries) {
|
||||
const rel = basePath ? `${basePath}/${e.name}` : e.name
|
||||
if (e.isDirectory()) {
|
||||
routes.push(...findIndexMdxRoutes(path.join(dir, e.name), rel))
|
||||
} else if (e.name === 'index.mdx') {
|
||||
routes.push('/' + basePath)
|
||||
}
|
||||
}
|
||||
return routes
|
||||
}
|
||||
|
||||
const routes = findIndexMdxRoutes(PAGES_DIR)
|
||||
.filter((r) => r !== '') // ignore root index if any
|
||||
.sort()
|
||||
|
||||
const content = `// Auto-generated by scripts/generate-github-routes.mjs – do not edit
|
||||
/** Pathnames served by src/pages/.../index.mdx (Edit on GitHub must link to /index.mdx). */
|
||||
export const EDIT_ON_GITHUB_INDEX_ROUTES = new Set(${JSON.stringify(routes)});
|
||||
`
|
||||
|
||||
fs.mkdirSync(path.dirname(OUT_PATH), { recursive: true })
|
||||
fs.writeFileSync(OUT_PATH, content, 'utf8')
|
||||
console.log('Generated', OUT_PATH, 'with', routes.length, 'index routes')
|
||||
Reference in New Issue
Block a user