use anyhow::Result;
use clap::Parser;
use std::path::PathBuf;
use ai_context_gen::{Config, ContextGenerator, RepositoryScanner};
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Args {
#[arg(short, long, default_value = ".")]
path: PathBuf,
#[arg(short, long, default_value = "50000")]
max_tokens: usize,
#[arg(short, long, default_value = "repo_context.md")]
output: String,
#[arg(long)]
include_hidden: bool,
#[arg(long)]
include_deps: bool,
}
#[tokio::main]
async fn main() -> Result<()> {
let args = Args::parse();
let config = Config {
repo_path: args.path,
max_tokens: args.max_tokens,
output_file: args.output,
include_hidden: args.include_hidden,
include_deps: args.include_deps,
};
println!("🔍 Scanning repository...");
let scanner = RepositoryScanner::new(config.clone());
let scan_result = scanner.scan().await?;
println!("📝 Generating context...");
let generator = ContextGenerator::new(config);
generator.generate_context(scan_result).await?;
println!("✅ Context generated successfully!");
Ok(())
}