From 02a7697b497c18a99ec1333be51821789f86b7f1 Mon Sep 17 00:00:00 2001 From: yggverse Date: Thu, 19 Mar 2026 19:06:29 +0200 Subject: [PATCH] implement original references, gen time, fix special chars escape --- src/config.rs | 4 ++++ src/main.rs | 29 ++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/config.rs b/src/config.rs index 371a901..d2fb9b9 100644 --- a/src/config.rs +++ b/src/config.rs @@ -25,4 +25,8 @@ pub struct Config { /// Generate index file with given name #[arg(short, long)] pub index: Option, + + /// Append reference to original source (mirrors) + #[arg(short, long)] + pub refer: Vec, } diff --git a/src/main.rs b/src/main.rs index 6d395f2..acf9a43 100644 --- a/src/main.rs +++ b/src/main.rs @@ -119,8 +119,27 @@ fn main() -> Result<()> { path })?; for discussion in &discussions { - file.write_all(format!("* [{}]({}.md)\n", discussion.title, discussion.id).as_bytes())?; + file.write_all( + format!( + "* [{}]({}.md)\n", + discussion + .title + .replace("[", "\\[") + .replace("]", "\\]") + .replace("(", "\\(") + .replace(")", "\\)"), + discussion.id + ) + .as_bytes(), + )?; } + let mut footer = Vec::new(); + footer.push("\n---\n".into()); + footer.push(format!("Generated at {}\n", Utc::now())); + for refer in &config.refer { + footer.push(format!("* {refer}")); + } + file.write_all(footer.join("\n").as_bytes())? } for discussion in discussions { @@ -176,6 +195,14 @@ fn main() -> Result<()> { } content.push("---\n".into()) } + content.push(format!("Generated at {}\n", Utc::now())); + for refer in &config.refer { + content.push(format!( + "* {}/d/{}", + refer.trim_end_matches("/"), + discussion.id + )); + } content.join("\n") }); page.join("\n")