From 36c39671708e1feeb309418d1d7195de6e491899 Mon Sep 17 00:00:00 2001 From: Rakarake Date: Sun, 5 Apr 2026 21:19:40 +0200 Subject: [PATCH] fixed rss order --- flake.lock | 71 +---------------------------------------------------- flake.nix | 27 ++------------------ src/main.rs | 47 ++++++++++++++++++----------------- 3 files changed, 27 insertions(+), 118 deletions(-) diff --git a/flake.lock b/flake.lock index 6f8bad3..e3816b4 100644 --- a/flake.lock +++ b/flake.lock @@ -1,21 +1,5 @@ { "nodes": { - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": "systems" @@ -66,28 +50,11 @@ "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1771043024, - "narHash": "sha256-O1XDr7EWbRp+kHrNNgLWgIrB0/US5wvw9K6RERWAj6I=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3aadb7ca9eac2891d52a9dec199d9580a6e2bf44", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-25.11", - "repo": "nixpkgs", - "type": "github" - } - }, "root": { "inputs": { "flake-utils": "flake-utils", "nixpkgs": "nixpkgs", - "rust-overlay": "rust-overlay", - "zig-overlay": "zig-overlay" + "rust-overlay": "rust-overlay" } }, "rust-overlay": { @@ -122,42 +89,6 @@ "repo": "default", "type": "github" } - }, - "systems_2": { - "flake": false, - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "zig-overlay": { - "inputs": { - "flake-compat": "flake-compat", - "nixpkgs": "nixpkgs_3", - "systems": "systems_2" - }, - "locked": { - "lastModified": 1772540502, - "narHash": "sha256-HXlx2i9gGH2HKfBSMihKCvU6DQMVlR4iyOulkSOe+Cg=", - "owner": "mitchellh", - "repo": "zig-overlay", - "rev": "03fa375def0685b8ce282f118452532845f16a20", - "type": "github" - }, - "original": { - "owner": "mitchellh", - "repo": "zig-overlay", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 5a56704..e41a803 100644 --- a/flake.nix +++ b/flake.nix @@ -5,10 +5,9 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # or whatever vers flake-utils.url = "github:numtide/flake-utils"; rust-overlay.url = "github:oxalica/rust-overlay"; - zig-overlay.url = "github:mitchellh/zig-overlay"; }; - outputs = { self, nixpkgs, flake-utils, rust-overlay, zig-overlay, ... }: + outputs = { nixpkgs, flake-utils, rust-overlay, ... }: flake-utils.lib.eachDefaultSystem (system: let overlays = [ (import rust-overlay) ]; @@ -17,35 +16,13 @@ }; in { - devShell = pkgs.mkShell rec { - LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}"; + devShell = pkgs.mkShell { packages = with pkgs; [ rustc cargo rust-analyzer - gcc - zig-overlay.packages."x86_64-linux".master curl ]; - buildInputs = with pkgs; [ - libdisplay-info - libgbm - #mesa - libinput - pixman - seatd - udev - libxkbcommon - wayland - wayland.dev - wayland-protocols - libGL - vulkan-headers vulkan-loader - vulkan-tools vulkan-tools-lunarg - vulkan-extension-layer - vulkan-validation-layers # don't need them *strictly* but immensely helpful - #libglvnd - ]; }; } ); diff --git a/src/main.rs b/src/main.rs index a98c61f..41ec8ff 100644 --- a/src/main.rs +++ b/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 = 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::>()) + .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!("

{title}

")).unwrap_or("".to_string()); let pub_date = metadata.get("pubDate").map(|pub_date| format!("{pub_date}")).unwrap_or("".to_string());