summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2026-06-20 03:41:37 +0300
committerA Farzat <a@farzat.xyz>2026-06-20 10:49:38 +0300
commit1929788fba900e3a306d31e92f6fae2aa7733278 (patch)
treef120b3e97d3281731ff1078a3931e722d38133b1 /src
parent7f586623ea5139041a09f59f78c6f87cbe937ba8 (diff)
downloadrepo2markdown-1929788fba900e3a306d31e92f6fae2aa7733278.tar.gz
repo2markdown-1929788fba900e3a306d31e92f6fae2aa7733278.zip
Add r2md-append binary
Diffstat (limited to 'src')
-rw-r--r--src/bin/r2md-append.rs50
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")]
+ );
+ }
+}