aboutsummaryrefslogtreecommitdiff
path: root/utils/Posts.tsx
diff options
context:
space:
mode:
authorflu0r1ne <flu0r1ne@flu0r1ne.net>2021-07-21 02:56:12 -0500
committerflu0r1ne <flu0r1ne@flu0r1ne.net>2021-07-21 02:56:12 -0500
commit51967b62cd274b10326a604d4db670e9e89f8fd5 (patch)
tree5899d3b976b0c419cfdacf99fe1f42ba5e4ce277 /utils/Posts.tsx
parent9e54416ae5e095ef5d47eb0c7a642894dddf46aa (diff)
downloadhomepage-51967b62cd274b10326a604d4db670e9e89f8fd5.tar.xz
homepage-51967b62cd274b10326a604d4db670e9e89f8fd5.zip
Automatic generation of list on log page
Diffstat (limited to 'utils/Posts.tsx')
-rw-r--r--utils/Posts.tsx57
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