fixed rss order
This commit is contained in:
parent
0beaa152b4
commit
36c3967170
3 changed files with 27 additions and 118 deletions
71
flake.lock
generated
71
flake.lock
generated
|
|
@ -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",
|
||||
|
|
|
|||
27
flake.nix
27
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
|
||||
];
|
||||
};
|
||||
}
|
||||
);
|
||||
|
|
|
|||
21
src/main.rs
21
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,12 +31,12 @@ 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 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)
|
||||
|
|
@ -50,11 +50,12 @@ fn main() -> io::Result<()> {
|
|||
.link(metadata.get("guid").map(|g| format!("https://mdf.farm/#{g}")))
|
||||
.guid(guid)
|
||||
.build()
|
||||
}).collect();
|
||||
}).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