diff options
| author | A Farzat <a@farzat.xyz> | 2026-06-05 05:32:01 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2026-06-05 05:32:01 +0300 |
| commit | 469e303febc61ebca3b5a977cf675b9f57111767 (patch) | |
| tree | 90184e85206815da066a0aea46db773b5a7b97f0 /src/main.rs | |
| parent | 5f0bf27647a89846ebab8a6331f5c04182244462 (diff) | |
| download | repo2markdown-469e303febc61ebca3b5a977cf675b9f57111767.tar.gz repo2markdown-469e303febc61ebca3b5a977cf675b9f57111767.zip | |
Add basic CLI handling
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 38 |
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"; |
