diff options
author | flu0r1ne <flu0r1ne@flu0r1ne.net> | 2021-07-21 02:56:12 -0500 |
---|---|---|
committer | flu0r1ne <flu0r1ne@flu0r1ne.net> | 2021-07-21 02:56:12 -0500 |
commit | 51967b62cd274b10326a604d4db670e9e89f8fd5 (patch) | |
tree | 5899d3b976b0c419cfdacf99fe1f42ba5e4ce277 /utils | |
parent | 9e54416ae5e095ef5d47eb0c7a642894dddf46aa (diff) | |
download | homepage-51967b62cd274b10326a604d4db670e9e89f8fd5.tar.xz homepage-51967b62cd274b10326a604d4db670e9e89f8fd5.zip |
Automatic generation of list on log page
Diffstat (limited to 'utils')
-rw-r--r-- | utils/Posts.tsx | 57 |
1 files changed, 57 insertions, 0 deletions
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<PostMetadata> { + const metaPath = path.join(postPath, 'meta.json'); + + const postMetadata = await fs.readFile(metaPath, 'utf8'); + + return JSON.parse(postMetadata) as PostMetadata; +} + +async function getPosts() : Promise<Post[]> { + 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<string> { + 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 |