fix html, css and markdown post listing
This commit is contained in:
parent
9b482858f4
commit
10a05dad15
4 changed files with 58 additions and 46 deletions
|
@ -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)
|
||||||
|
|
|
@ -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}}
|
||||||
|
|
|
@ -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}}
|
||||||
|
|
|
@ -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}}
|
||||||
|
|
Loading…
Reference in a new issue