use anyhow::Result;
use clap::Parser;
use slug_generator_plus::generate_slug;
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Args {
#[arg(required = true)]
text: Vec<String>,
#[arg(short, long, default_value = "-")]
separator: String,
#[arg(short, long)]
max_length: Option<usize>,
#[arg(short, long)]
preserve_case: bool,
#[arg(short, long)]
quiet: bool,
}
fn main() -> Result<()> {
let args = Args::parse();
let text = args.text.join(" ");
if args.separator.is_empty() {
anyhow::bail!("Separator cannot be empty");
}
let slug = generate_slug(
&text,
Some(&args.separator),
args.max_length,
Some(!args.preserve_case),
);
if args.quiet {
println!("{}", slug);
} else {
println!("Original: {}", text);
println!("Slug: {}", slug);
println!("Length: {}", slug.len());
}
Ok(())
}