From c4b6fb1fc04a0689405c9a22d9c0f505dcf5ce4b Mon Sep 17 00:00:00 2001 From: Rakarake Date: Thu, 26 Mar 2026 13:20:05 +0100 Subject: [PATCH] simple case working --- Cargo.lock | 216 +++++++++++++++++++++++++++++--------------------- Cargo.toml | 2 +- blogs/day1.md | 1 + blogs/day2.md | 1 + src/main.rs | 42 +++++----- 5 files changed, 151 insertions(+), 111 deletions(-) create mode 100644 blogs/day1.md create mode 100644 blogs/day2.md diff --git a/Cargo.lock b/Cargo.lock index 06af499..3f9726e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,112 +3,134 @@ version = 4 [[package]] -name = "anstream" -version = "1.0.0" +name = "atom_syndication" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +checksum = "d2f68d23e2cb4fd958c705b91a6b4c80ceeaf27a9e11651272a8389d5ce1a4a3" dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", + "chrono", + "derive_builder", + "diligent-date-parser", + "never", + "quick-xml", ] [[package]] -name = "anstyle" -version = "1.0.14" +name = "autocfg" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] -name = "anstyle-parse" -version = "1.0.0" +name = "cfg-if" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ - "utf8parse", + "num-traits", ] [[package]] -name = "anstyle-query" -version = "1.1.5" +name = "darling" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "windows-sys", + "darling_core", + "darling_macro", ] [[package]] -name = "anstyle-wincon" -version = "3.0.11" +name = "darling_core" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys", -] - -[[package]] -name = "clap" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", + "fnv", + "ident_case", + "proc-macro2", + "quote", "strsim", + "syn", ] [[package]] -name = "clap_derive" -version = "4.6.0" +name = "darling_macro" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "heck", + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", "proc-macro2", "quote", "syn", ] [[package]] -name = "clap_lex" -version = "1.1.0" +name = "derive_builder_macro" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn", +] [[package]] -name = "colorchoice" -version = "1.0.5" +name = "diligent-date-parser" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" +checksum = "c8ede7d79366f419921e2e2f67889c12125726692a313bffb474bd5f37a581e9" +dependencies = [ + "chrono", +] [[package]] -name = "heck" -version = "0.5.0" +name = "encoding_rs" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] [[package]] -name = "is_terminal_polyfill" -version = "1.70.2" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "markdown" @@ -123,15 +145,30 @@ dependencies = [ name = "mdf-blog" version = "0.1.0" dependencies = [ - "clap", "markdown", + "rss", ] [[package]] -name = "once_cell_polyfill" -version = "1.70.2" +name = "memchr" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "never" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96aba5aa877601bb3f6dd6a63a969e1f82e60646e81e71b14496995e9853c91" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] [[package]] name = "proc-macro2" @@ -142,6 +179,16 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "encoding_rs", + "memchr", +] + [[package]] name = "quote" version = "1.0.45" @@ -151,6 +198,18 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rss" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2107738f003660f0a91f56fd3e3bd3ab5d918b2ddaf1e1ec2136fb1c46f71bf" +dependencies = [ + "atom_syndication", + "derive_builder", + "never", + "quick-xml", +] + [[package]] name = "strsim" version = "0.11.1" @@ -179,24 +238,3 @@ name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] diff --git a/Cargo.toml b/Cargo.toml index bff9342..419e664 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,5 +4,5 @@ version = "0.1.0" edition = "2024" [dependencies] -clap = { version = "4.6.0", features = ["derive"] } markdown = "*" +rss = "*" diff --git a/blogs/day1.md b/blogs/day1.md new file mode 100644 index 0000000..00b429b --- /dev/null +++ b/blogs/day1.md @@ -0,0 +1 @@ +What a good day! diff --git a/blogs/day2.md b/blogs/day2.md new file mode 100644 index 0000000..63ce479 --- /dev/null +++ b/blogs/day2.md @@ -0,0 +1 @@ +This was tough, good I have my pikmin plush. diff --git a/src/main.rs b/src/main.rs index 124a075..d846b75 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,27 +1,27 @@ +use std::{env::args, io}; + use markdown::to_html; -use clap::Parser; - -#[derive(Parser, Debug)] -#[command(version, about, long_about = None)] -struct Args { - /// Name of the person to greet - #[arg(short, long)] - name: String, - - /// Number of times to greet - #[arg(short, long, default_value_t = 1)] - count: u8, -} - -fn main() { - let args = Args::parse(); +use rss::{Channel, Item, ChannelBuilder, ItemBuilder}; +fn main() -> io::Result<()> { // takes directory of markdown files as only argument, outputs // html output into stdout (TODO make ) - if let Some(dir) = std::env::args().skip(1).next() { - // get files in dir - } - //let input: String = std::fs::read_to_string(&args[1]).unwrap(); - //print!("{}", to_html(&input)); + let mut channel = Channel::default(); + channel.title = "MDF blog huge".to_string(); + channel.link = "rakarake.xyz".to_string(); + channel.description = "morbius text wow".to_string(); + channel.items = std::env::args().skip(1).map(|f| { + let contents = std::fs::read_to_string(f.clone())?; + let html = to_html(&contents); + // TODO get the title from the document, read other metadata + Ok(ItemBuilder::default() + .title(f) + .description(html) + .build() + ) + }).collect::, io::Error>>()?; + println!("{}", channel.to_string()); + + Ok(()) }