use clap::Parser;
use std::path::PathBuf;
use TypeScript_Rust_Compiler::compiler::Compiler;
use TypeScript_Rust_Compiler::error::Result;
#[derive(Parser)]
#[command(name = "TypeScript-Rust-Compiler")]
#[command(about = "High-performance TypeScript to Rust compiler")]
#[command(version)]
struct Cli {
#[arg(short, long)]
input: PathBuf,
#[arg(short, long)]
output: PathBuf,
#[arg(short, long)]
verbose: bool,
#[arg(short, long)]
debug: bool,
#[arg(long)]
optimize: bool,
#[arg(short, long)]
runtime: bool,
}
fn main() -> Result<()> {
let cli = Cli::parse();
let log_level = if cli.debug {
tracing::Level::DEBUG
} else if cli.verbose {
tracing::Level::INFO
} else {
tracing::Level::WARN
};
tracing_subscriber::fmt().with_max_level(log_level).init();
let mut compiler = Compiler::new()
.with_optimization(cli.optimize)
.with_runtime(cli.runtime);
if cli.debug {
println!("Debug mode: Enabled");
}
compiler.compile(&cli.input, &cli.output)?;
println!("✅ Compilation completed successfully!");
println!("📁 Output directory: {}", cli.output.display());
Ok(())
}