From 51967b62cd274b10326a604d4db670e9e89f8fd5 Mon Sep 17 00:00:00 2001 From: flu0r1ne Date: Wed, 21 Jul 2021 02:56:12 -0500 Subject: Automatic generation of list on log page --- utils/Posts.tsx | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 utils/Posts.tsx (limited to 'utils/Posts.tsx') diff --git a/utils/Posts.tsx b/utils/Posts.tsx new file mode 100644 index 0000000..e82357a --- /dev/null +++ b/utils/Posts.tsx @@ -0,0 +1,57 @@ +import { promises as fs } from 'fs'; +import path from 'path'; + +interface PostMetadata { + name: string; +} + +interface Post { + directory: string; + path: string; + meta: PostMetadata; +} + +export type { + PostMetadata, + Post +}; + +async function getMetadata(postPath : string) : Promise { + const metaPath = path.join(postPath, 'meta.json'); + + const postMetadata = await fs.readFile(metaPath, 'utf8'); + + return JSON.parse(postMetadata) as PostMetadata; +} + +async function getPosts() : Promise { + const postsDirectory = path.join(process.cwd(), 'posts'); + const directories = await fs.readdir(postsDirectory); + + const posts = directories.map(async (directory) => { + const postPath = path.join(postsDirectory, directory); + + const meta = await getMetadata(postPath); + + return { + directory, + path: postPath, + meta + }; + }); + + return await Promise.all(posts); +} + +async function getMarkdown(post : Post) : Promise { + const markdownPath = path.join(post.path, 'main.md'); + + const markdown = await fs.readFile(markdownPath, 'utf8'); + + return markdown; +} + +export { + getPosts, + getMetadata, +}; \ No newline at end of file -- cgit v1.2.3