use clap::Parser;
use lemmeknow::{Identifier, PrintMode};
#[derive(Parser)]
#[clap(
author,
version,
about,
long_about = "https://github.com/swanandx/lemmeknow"
)]
struct Args {
text: String,
#[clap(short, long)]
json: bool,
#[clap(long = "min", default_value_t = 0.1)]
min_rarity: f32,
#[clap(long = "max", default_value_t = 1.0)]
max_rarity: f32,
#[clap(short, long)]
text_only: bool,
#[clap(short, long)]
boundary: bool,
#[clap(short, long, value_delimiter(','))]
include: Option<Vec<String>>,
#[clap(short, long, value_delimiter(','))]
exclude: Option<Vec<String>>,
#[clap(short, long)]
verbose: bool,
}
fn main() {
let args = Args::parse();
let identifier = Identifier::default()
.min_rarity(args.min_rarity)
.max_rarity(args.max_rarity)
.include_tags(&args.include.unwrap_or_default())
.exclude_tags(&args.exclude.unwrap_or_default())
.boundaryless(!args.boundary) .file_support(!args.text_only);
let result = identifier.identify(&args.text);
if args.json {
let result_in_json = Identifier::to_json(&result);
println!("{result_in_json}");
} else {
let printer = if args.verbose {
PrintMode::Verbose
} else {
PrintMode::Normal
};
printer.print(&result);
}
}