summaryrefslogtreecommitdiffstats
path: root/src/main.rs
blob: e1d4752a91b85f8081826ef88a20e21444646d90 (plain)
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
//mod doxygen;
mod cli;
mod entities;
mod generator;
mod pandoc;
mod parsing;

#[macro_use]
extern crate log;

use cli::Command;
use generator::generate;
use parsing::parse_file;

use anyhow::Result;
use structopt::StructOpt;

fn main() -> Result<()> {
    let cli = cli::Cli::from_args();
    pretty_env_logger::formatted_builder()
        .filter(
            None,
            match cli.verbosity {
                // Warnings and errors for internal warnings / errors
                0 => log::LevelFilter::Warn,
                1 => log::LevelFilter::Info,
                2 => log::LevelFilter::Debug,
                _ => log::LevelFilter::Trace,
            },
        )
        .try_init()?;

    match cli.command {
        Command::Generate { file } => {
            let extra_args = cli.extra_arg.iter().flatten().map(AsRef::as_ref).collect();
            let manager = parse_file(file, extra_args);

            let base_output_dir = std::path::Path::new("doc");
            generate(&base_output_dir, manager)?;
        }
    }

    Ok(())
}