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