From e7910b55d1970979a857951f14e893d04d26d9f9 Mon Sep 17 00:00:00 2001 From: A Farzat Date: Thu, 4 Jun 2026 09:45:56 +0300 Subject: Handle basic stdin --- src/main.rs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index bbea60f..71e4ac4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,10 +6,33 @@ fn main() { println!("Hello, world!"); } -pub fn run(mut input: R, mut output: W) -> Result<(), Box> { +pub fn run( + mut input: R, + mut output: W, +) -> Result<(), Box> { let mut buf = Vec::new(); input.read_to_end(&mut buf)?; - let rendered = render("Project name", &[])?; + + let mut owned = Vec::new(); + + for segment in buf.split(|b| *b == 0) { + if segment.is_empty() { + continue; + } + + let path = std::str::from_utf8(segment)?; + let bytes = std::fs::read(path)?; + + owned.push((path.to_string(), bytes)); + } + + // convert to expected renderer input + let refs: Vec<(&str, &[u8])> = owned + .iter() + .map(|(p, b)| (p.as_str(), b.as_slice())) + .collect(); + + let rendered = render("Project name", &refs)?; output.write_all(rendered.as_bytes())?; Ok(()) } @@ -17,19 +40,38 @@ pub fn run(mut input: R, mut output: W) -> Result<(), Box