fixed rss order
This commit is contained in:
parent
0beaa152b4
commit
36c3967170
3 changed files with 27 additions and 118 deletions
47
src/main.rs
47
src/main.rs
|
|
@ -1,9 +1,9 @@
|
|||
use std::{collections::HashMap, io, path::Path};
|
||||
use markdown::to_html;
|
||||
use rss::{Channel, GuidBuilder, ItemBuilder};
|
||||
use rss::{Channel, ChannelBuilder, GuidBuilder, Item, ItemBuilder};
|
||||
|
||||
fn main() -> io::Result<()> {
|
||||
let posts = std::env::args().skip(2).rev().map(|f| {
|
||||
let posts = std::env::args().skip(2).map(|f| {
|
||||
let contents = std::fs::read_to_string(f.clone())?;
|
||||
// parse metadata, then the rest to html
|
||||
let mut metadata: HashMap<String, String> = contents.lines().take_while(|l| {
|
||||
|
|
@ -31,30 +31,31 @@ fn main() -> io::Result<()> {
|
|||
if let Some(mode) = std::env::args().skip(1).next() {
|
||||
match mode.as_str() {
|
||||
"rss" => {
|
||||
let mut channel = Channel::default();
|
||||
channel.title = "MDF blog huge".to_string();
|
||||
channel.link = "https://mdf.farm".to_string();
|
||||
channel.description = "The MDF blog".to_string();
|
||||
channel.generator = Some("Rakabaka's tooling".to_string());
|
||||
channel.items = posts.iter().map(|(body, metadata)| {
|
||||
let guid = metadata.get("guid").map(|guid|
|
||||
GuidBuilder::default()
|
||||
.value(guid)
|
||||
.permalink(false)
|
||||
.build()
|
||||
);
|
||||
ItemBuilder::default()
|
||||
.title(metadata.get("title").map(|title| title.clone()))
|
||||
.description(Some(body.clone()))
|
||||
.pub_date(metadata.get("pubDate").map(|title| title.clone()))
|
||||
.link(metadata.get("guid").map(|g| format!("https://mdf.farm/#{g}")))
|
||||
.guid(guid)
|
||||
.build()
|
||||
}).collect();
|
||||
let channel = ChannelBuilder::default()
|
||||
.title("MDF blog huge".to_string())
|
||||
.link("https://mdf.farm".to_string())
|
||||
.description("The MDF blog".to_string())
|
||||
.generator(Some("Rakabaka's tooling".to_string()))
|
||||
.items(posts.iter().map(|(body, metadata)| {
|
||||
let guid = metadata.get("guid").map(|guid|
|
||||
GuidBuilder::default()
|
||||
.value(guid)
|
||||
.permalink(false)
|
||||
.build()
|
||||
);
|
||||
ItemBuilder::default()
|
||||
.title(metadata.get("title").map(|title| title.clone()))
|
||||
.description(Some(body.clone()))
|
||||
.pub_date(metadata.get("pubDate").map(|title| title.clone()))
|
||||
.link(metadata.get("guid").map(|g| format!("https://mdf.farm/#{g}")))
|
||||
.guid(guid)
|
||||
.build()
|
||||
}).collect::<Vec<Item>>())
|
||||
.build();
|
||||
print!("{}", channel);
|
||||
},
|
||||
"html" => {
|
||||
print!("{}", posts.iter().enumerate().map(|(i, (body, metadata))| {
|
||||
print!("{}", posts.iter().rev().enumerate().map(|(i, (body, metadata))| {
|
||||
let guid = metadata.get("guid").unwrap_or(&i.to_string()).clone();
|
||||
let title = metadata.get("title").map(|title| format!("<h1>{title}</h1>")).unwrap_or("".to_string());
|
||||
let pub_date = metadata.get("pubDate").map(|pub_date| format!("<i>{pub_date}</i>")).unwrap_or("".to_string());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue