From 1929788fba900e3a306d31e92f6fae2aa7733278 Mon Sep 17 00:00:00 2001 From: A Farzat Date: Sat, 20 Jun 2026 03:41:37 +0300 Subject: Add r2md-append binary --- src/bin/r2md-append.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/bin/r2md-append.rs diff --git a/src/bin/r2md-append.rs b/src/bin/r2md-append.rs new file mode 100644 index 0000000..4cd2ae9 --- /dev/null +++ b/src/bin/r2md-append.rs @@ -0,0 +1,50 @@ +use std::{ffi::OsString, io}; + +use clap::Parser; +use repo2markdown::path_list_editor::append_paths; + +/// Append paths to a null-separated file list from stdin. +#[derive(Debug, Parser)] +#[command(version, about, long_about = None)] +struct Cli { + /// Paths to append to the input sequence. + paths: Vec, +} + +fn main() -> io::Result<()> { + let cli = Cli::parse(); + append_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-append"]).unwrap(); + + assert_eq!(cli.paths, Vec::::new()); + } + + #[test] + fn accepts_one_path() { + let cli = Cli::try_parse_from(["r2md-append", "README.md"]).unwrap(); + + assert_eq!(cli.paths, vec![OsString::from("README.md")]); + } + + #[test] + fn accepts_multiple_paths() { + let cli = Cli::try_parse_from(["r2md-append", "README.md", "src/main.rs"]).unwrap(); + + assert_eq!( + cli.paths, + vec![OsString::from("README.md"), OsString::from("src/main.rs")] + ); + } +} -- cgit v1.3.1