From 973baa379ff589bf5c0c32ee0c56af892b3eb339 Mon Sep 17 00:00:00 2001 From: A Farzat Date: Sat, 20 Jun 2026 03:43:54 +0300 Subject: Add r2md-prepend binary --- src/bin/r2md-prepend.rs | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/bin/r2md-prepend.rs diff --git a/src/bin/r2md-prepend.rs b/src/bin/r2md-prepend.rs new file mode 100644 index 0000000..2649587 --- /dev/null +++ b/src/bin/r2md-prepend.rs @@ -0,0 +1,50 @@ +use std::{ffi::OsString, io}; + +use clap::Parser; +use repo2markdown::path_list_editor::prepend_paths; + +/// Prepend paths to a null-separated file list from stdin. +#[derive(Debug, Parser)] +#[command(version, about, long_about = None)] +struct Cli { + /// Paths to prepend to the input sequence. + paths: Vec, +} + +fn main() -> io::Result<()> { + let cli = Cli::parse(); + prepend_paths(io::stdin().lock(), io::stdout().lock(), &cli.paths) +} + +#[cfg(test)] +mod tests { + use std::ffi::OsString; + + use clap::Parser; + + use super::Cli; + + #[test] + fn accepts_no_paths() { + let cli = Cli::try_parse_from(["r2md-prepend"]).unwrap(); + + assert_eq!(cli.paths, Vec::::new()); + } + + #[test] + fn accepts_one_path() { + let cli = Cli::try_parse_from(["r2md-prepend", "README.md"]).unwrap(); + + assert_eq!(cli.paths, vec![OsString::from("README.md")]); + } + + #[test] + fn accepts_multiple_paths() { + let cli = Cli::try_parse_from(["r2md-prepend", "README.md", "src/main.rs"]).unwrap(); + + assert_eq!( + cli.paths, + vec![OsString::from("README.md"), OsString::from("src/main.rs")] + ); + } +} -- cgit v1.3.1