dasn1-notation 0.1.1

A compiler for the ASN.1 notation language
Documentation
use clap::{clap_app, crate_description, crate_version};
use log::{debug, LevelFilter};

use dasn1_notation::NotationCompiler;

fn main() {
    let matches = clap_app!(casn1 =>
        (version: crate_version!())
        (author: "Erin Power <e.power@dac.eu> + Contributors")
        (about: crate_description!())
        (@arg dependencies: -d --dependencies
            +takes_value
            "Specify the dependency directory. Will automatically parse the headers of \
            the files, and import them if necessary. Default: \"./definitions\"")
        (@arg input: ... "ASN.1 files to parse.")
        (@arg verbose: -v --verbose ...
            "Set log output level")
    )
    .get_matches();

    let mut builder = ::env_logger::Builder::new();

    let filter_level = match matches.occurrences_of("verbose") {
        1 => LevelFilter::Debug,
        2 => LevelFilter::Trace,
        _ => LevelFilter::Warn,
    };

    builder.filter(None, filter_level);
    builder.init();

    debug!("LOG Level: {:?}", filter_level);
    debug!("CLI Config: {:#?}", matches);

    let directory = matches.value_of("dependencies").unwrap_or("./asn1");

    let module = NotationCompiler::new(matches.value_of("input").unwrap())
        .dependencies(directory)
        .build()
        .unwrap_or_else(|e| panic!("{}", e));

    println!("{}", module);
}