summaryrefslogtreecommitdiff
path: root/src/main.rs
blob: d9ba728c498adc106891757085d2730191361f33 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
use std::{
    env,
    io::{self},
    path::Path,
};

use repo2markdown::{
    logger::{Logger, Verbosity},
    run::run,
};

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();

    let logger = Logger::new(Verbosity::Normal);
    run(
        stdin.lock(),
        stdout.lock(),
        root,
        origin,
        name.as_deref(),
        logger,
    )
}