diff options
| author | A Farzat <a@farzat.xyz> | 2026-06-20 03:41:37 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2026-06-20 10:49:38 +0300 |
| commit | 1929788fba900e3a306d31e92f6fae2aa7733278 (patch) | |
| tree | f120b3e97d3281731ff1078a3931e722d38133b1 /src/bin/r2md-append.rs | |
| parent | 7f586623ea5139041a09f59f78c6f87cbe937ba8 (diff) | |
| download | repo2markdown-1929788fba900e3a306d31e92f6fae2aa7733278.tar.gz repo2markdown-1929788fba900e3a306d31e92f6fae2aa7733278.zip | |
Add r2md-append binary
Diffstat (limited to 'src/bin/r2md-append.rs')
| -rw-r--r-- | src/bin/r2md-append.rs | 50 |
1 files changed, 50 insertions, 0 deletions
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<OsString>, +} + +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::<OsString>::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")] + ); + } +} |
