summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2026-06-05 05:32:01 +0300
committerA Farzat <a@farzat.xyz>2026-06-05 05:32:01 +0300
commit469e303febc61ebca3b5a977cf675b9f57111767 (patch)
tree90184e85206815da066a0aea46db773b5a7b97f0 /src
parent5f0bf27647a89846ebab8a6331f5c04182244462 (diff)
downloadrepo2markdown-469e303febc61ebca3b5a977cf675b9f57111767.tar.gz
repo2markdown-469e303febc61ebca3b5a977cf675b9f57111767.zip
Add basic CLI handling
Diffstat (limited to 'src')
-rw-r--r--src/main.rs38
1 files changed, 35 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index 64f6112..3e78fe4 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,14 +1,46 @@
use std::{
+ env,
ffi::OsStr,
- io::{Read, Write},
+ io::{self, Read, Write},
os::unix::ffi::OsStrExt,
path::Path,
};
use repo2markdown::{normalizer::Normalizer, renderer::render};
-fn main() {
- println!("Hello, world!");
+fn main() -> Result<(), Box<dyn std::error::Error>> {
+ let mut args = env::args().skip(1);
+
+ let mut root = None;
+ let mut origin = None;
+ let mut name = None;
+
+ while let Some(arg) = args.next() {
+ match arg.as_str() {
+ "--root" => root = args.next(),
+ "--origin" => origin = args.next(),
+ "--name" => name = args.next(),
+ _ => {
+ eprintln!("Unknown argument: {}", arg);
+ std::process::exit(1);
+ }
+ }
+ }
+
+ let root = root
+ .as_deref()
+ .map(Path::new)
+ .unwrap_or_else(|| Path::new("."));
+
+ let origin = origin
+ .as_deref()
+ .map(Path::new)
+ .unwrap_or_else(|| Path::new("."));
+
+ let stdin = io::stdin();
+ let stdout = io::stdout();
+
+ run(stdin.lock(), stdout.lock(), root, origin, name.as_deref())
}
const DEFAULT_PROJECT_NAME: &str = "Project Outline";