Files
supabase/apps/temp-docs/lib/docs.ts
2022-04-26 14:17:19 +02:00

46 lines
1.1 KiB
TypeScript

import fs from 'fs'
import { join } from 'path'
import matter from 'gray-matter'
const docsDirectory = process.cwd()
export function getDocsBySlug(slug: string) {
const realSlug = slug.replace(/\.mdx$/, '')
let fullPath = join(docsDirectory, `${realSlug}.mdx`)
if (!fs.existsSync(fullPath)) {
console.log(`\nfile ${fullPath} not found, redirect to 404\n`)
fullPath = join(docsDirectory, 'docs/404.mdx')
}
const fileContents = fs.readFileSync(fullPath, 'utf8')
const { data, content } = matter(fileContents)
return { slug: realSlug, meta: data, content }
}
export function getAllDocs() {
const slugs = walk('docs')
const docs = slugs.map((slug) => getDocsBySlug(slug))
return docs
}
function walk(dir: string) {
let results: string[] = []
const list = fs.readdirSync(dir)
list.forEach(function (file) {
file = dir + '/' + file
const stat = fs.statSync(file)
if (stat && stat.isDirectory()) {
/* Recurse into a subdirectory */
results = results.concat(walk(file))
} else {
/* Is a file */
results.push(file)
}
})
return results
}