#[cfg(feature = "mimalloc-alloc")]
#[global_allocator]
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
use clap::Parser;
use libgrammstein::cli::{commands, Cli};
fn main() {
let cli = Cli::parse();
let skip_env_logger = should_skip_env_logger(&cli);
if !skip_env_logger {
init_logging(cli.verbose, cli.quiet);
}
if let Err(e) = commands::run(cli) {
eprintln!("{}", e);
std::process::exit(1);
}
}
fn should_skip_env_logger(_cli: &Cli) -> bool {
#[cfg(feature = "google-books")]
if let libgrammstein::cli::Commands::Train(ref train) = _cli.command {
use libgrammstein::cli::args::TrainCommands;
if let TrainCommands::ImportGoogleBooks(ref args) = train {
return !_cli.quiet && !args.resources.no_progress;
}
}
false
}
fn init_logging(verbose: bool, quiet: bool) {
let level = if quiet {
log::LevelFilter::Error
} else if verbose {
log::LevelFilter::Debug
} else {
log::LevelFilter::Info
};
env_logger::Builder::new()
.filter_level(level)
.format_timestamp(None)
.format_module_path(false)
.init();
}