From 18a33193000e996e08e9a5547afe62c0346c0e21 Mon Sep 17 00:00:00 2001 From: A Farzat Date: Fri, 19 Jun 2026 04:40:39 +0300 Subject: Add the r2md-fence binary To feed individual files without the extra boilerplate. --- src/bin/r2md-fence.rs | 21 +++++++++++++++++++++ src/fence_wrapper.rs | 20 ++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/bin/r2md-fence.rs diff --git a/src/bin/r2md-fence.rs b/src/bin/r2md-fence.rs new file mode 100644 index 0000000..bfaf8d5 --- /dev/null +++ b/src/bin/r2md-fence.rs @@ -0,0 +1,21 @@ +use std::io; + +use clap::Parser; +use repo2markdown::fence_wrapper::wrap_in_fence; + +#[derive(Debug, Parser)] +#[command(version, about, long_about = None)] +struct Cli { + /// Language tag to append to the opening markdown fence. + #[arg(long, short, default_value = "")] + language: String, +} + +fn main() -> io::Result<()> { + let cli = Cli::parse(); + + let stdin = io::stdin(); + let stdout = io::stdout(); + + wrap_in_fence(stdin.lock(), stdout.lock(), &cli.language) +} diff --git a/src/fence_wrapper.rs b/src/fence_wrapper.rs index a218088..fc8f1c2 100644 --- a/src/fence_wrapper.rs +++ b/src/fence_wrapper.rs @@ -66,4 +66,24 @@ mod tests { assert_eq!(String::from_utf8(output).unwrap(), "```text\n\n```\n"); } + + #[test] + fn supports_empty_language() { + let input = Cursor::new("hello\n"); + let mut output = Vec::new(); + + wrap_in_fence(input, &mut output, "").unwrap(); + + assert_eq!(String::from_utf8(output).unwrap(), "```\nhello\n\n```\n"); + } + + #[test] + fn wraps_empty_input_with_empty_language() { + let input = Cursor::new(""); + let mut output = Vec::new(); + + wrap_in_fence(input, &mut output, "").unwrap(); + + assert_eq!(String::from_utf8(output).unwrap(), "```\n\n```\n"); + } } -- cgit v1.3.1