use clap::Parser;
use colored::Colorize;
use indicatif::{ProgressBar, ProgressStyle};
pub mod setup;
pub mod ui;
#[derive(Parser, Debug)]
#[command(name = "autocommit")]
#[command(version)]
#[command(about, long_about = None)]
pub struct Args {
#[arg(long, value_name = "KEY")]
pub openai_key: Option<String>,
#[arg(long, value_name = "KEY")]
pub gemini_key: Option<String>,
#[arg(long, value_name = "MODEL")]
pub model: Option<String>,
#[arg(long)]
pub short: bool,
#[arg(long)]
pub long: bool,
#[arg(long)]
pub sign: bool,
#[arg(long)]
pub no_sign: bool,
#[arg(long)]
pub no_verify: bool,
}
pub fn logger_info(msg: &str) {
println!("{} {}", "ℹ".blue(), msg);
}
pub fn logger_success(msg: &str) {
println!("{} {}", "✔".green(), msg);
}
pub fn logger_warn(msg: &str) {
println!("{} {}", "⚠".yellow(), msg);
}
pub fn logger_error(msg: &str) {
eprintln!("{} {}", "✖".red(), msg);
}
pub fn create_spinner(text: &str) -> ProgressBar {
let spinner = ProgressBar::new_spinner();
spinner.set_style(
ProgressStyle::default_spinner()
.tick_chars("⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏")
.template("{spinner} {msg}")
.unwrap(),
);
spinner.set_message(text.to_string());
spinner.enable_steady_tick(std::time::Duration::from_millis(80));
spinner
}