fix html, css and markdown post listing

This commit is contained in:
slonkazoid 2025-01-29 18:00:57 +03:00
parent 9b482858f4
commit 10a05dad15
Signed by: slonk
SSH key fingerprint: SHA256:tbZfJX4IOvZ0LGWOWu5Ijo8jfMPi78TU7x1VoEeCIjM
4 changed files with 58 additions and 46 deletions

View file

@ -19,7 +19,7 @@ use serde::Deserialize;
use serde_value::Value; use serde_value::Value;
use tokio::fs; use tokio::fs;
use tokio::io::AsyncReadExt; use tokio::io::AsyncReadExt;
use tracing::{info, instrument, warn}; use tracing::{error, info, instrument};
use crate::config::MarkdownConfig; use crate::config::MarkdownConfig;
use crate::markdown_render::{build_syntect, render}; use crate::markdown_render::{build_syntect, render};
@ -168,6 +168,7 @@ where
let mut read_dir = fs::read_dir(&self.config.load().root).await?; let mut read_dir = fs::read_dir(&self.config.load().root).await?;
while let Some(entry) = read_dir.next_entry().await? { while let Some(entry) = read_dir.next_entry().await? {
if let Err(err) = async {
let path = entry.path(); let path = entry.path();
let stat = fs::metadata(&path).await?; let stat = fs::metadata(&path).await?;
@ -189,6 +190,14 @@ where
posts.push((meta, body, perf)); posts.push((meta, body, perf));
} }
} }
color_eyre::eyre::Ok(())
}
.await
{
error!("error while getting post: {err}");
continue;
};
} }
Ok(posts) Ok(posts)
@ -203,6 +212,7 @@ where
let mut read_dir = fs::read_dir(&self.config.load().root).await?; let mut read_dir = fs::read_dir(&self.config.load().root).await?;
while let Some(entry) = read_dir.next_entry().await? { while let Some(entry) = read_dir.next_entry().await? {
if let Err(err) = async {
let path = entry.path(); let path = entry.path();
let stat = fs::metadata(&path).await?; let stat = fs::metadata(&path).await?;
@ -219,23 +229,20 @@ where
{ {
posts.push(hit); posts.push(hit);
} else { } else {
match self.parse_and_render(name, path).await { let (metadata, ..) = self.parse_and_render(name, path).await?;
Ok((metadata, ..)) => {
if metadata.apply_filters(filters) { if metadata.apply_filters(filters) {
posts.push(metadata); posts.push(metadata);
} }
} }
Err(err) => match err { }
PostError::IoError(ref io_err)
if matches!(io_err.kind(), io::ErrorKind::NotFound) => color_eyre::eyre::Ok(())
}
.await
{ {
warn!("TOCTOU: {}", err) error!("error while getting post metadata: {err}");
} continue;
_ => return Err(err), };
},
}
}
}
} }
Ok(posts) Ok(posts)

View file

@ -1,3 +1,4 @@
<!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
@ -11,6 +12,7 @@
{{/if}} {{/if}}
<title>{{style.title}}</title> <title>{{style.title}}</title>
<link rel="stylesheet" href="/static/style.css" /> <link rel="stylesheet" href="/static/style.css" />
<link rel="stylesheet" href="/static/custom/style.css" />
{{#if rss}} {{#if rss}}
<link rel="alternate" type="application/rss+xml" title="{{style.title}}" href="/feed.xml" /> <link rel="alternate" type="application/rss+xml" title="{{style.title}}" href="/feed.xml" />
{{/if}} {{/if}}

View file

@ -1,3 +1,4 @@
<!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
@ -33,7 +34,7 @@
<script src="/static/main.js" defer></script> <script src="/static/main.js" defer></script>
{{/if}} {{/if}}
</head> </head>
<body> <body class="cool">
<main> <main>
<h1 class="post-title"> <h1 class="post-title">
{{meta.title}} {{meta.title}}

View file

@ -1,9 +1,11 @@
<!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{title}}</title> <title>{{title}}</title>
<link rel="stylesheet" href="/static/style.css" /> <link rel="stylesheet" href="/static/style.css" />
<link rel="stylesheet" href="/static/custom/style.css" />
{{#if rss}} {{#if rss}}
<link rel="alternate" type="application/rss+xml" title="{{style.title}}" href="/feed.xml" /> <link rel="alternate" type="application/rss+xml" title="{{style.title}}" href="/feed.xml" />
{{/if}} {{/if}}