#![forbid(unsafe_code)]
use std::io::IsTerminal;
fn main() {
let args: Vec<String> = std::env::args().collect();
let is_interactive_repl = args.len() <= 1 && std::io::stdin().is_terminal();
let skip_update_check = (!is_interactive_repl && args.len() <= 1)
|| args.iter().skip(1).any(|arg| {
matches!(
arg.as_str(),
"--help" | "-h" | "--version" | "-V" | "--quiet" | "-q" | "update" | "mcp"
)
});
if !skip_update_check && std::env::var("FOSSIL_NO_UPDATE_CHECK").is_err() {
std::thread::spawn(fossil_mcp::update::check_for_update_background);
std::thread::spawn(fossil_mcp::cli::commands::weekly_cache::prefetch_weekly_data);
}
if args.len() > 1 && args[1] == "mcp" {
fossil_mcp::mcp::McpServer::new().run().unwrap();
} else if args.len() <= 1 && !std::io::stdin().is_terminal() {
fossil_mcp::mcp::McpServer::new().run().unwrap();
} else if args.len() <= 1 {
fossil_mcp::cli::run_scan_default();
} else {
fossil_mcp::cli::run();
}
}