use anyhow::Result;
use clap::Parser;
mod cli;
mod input;
mod output;
mod query;
use crate::cli::Cli;
fn main() -> Result<()> {
let cli = Cli::parse();
let query = query::load_query(&cli)?;
let params = query::parse_query_params(&cli.params)?;
let input_specs = input::parse_input_specs(&cli.input, cli.sheet.as_deref())?;
let workbook_inputs = input_specs
.iter()
.map(|input| query_forge::WorkbookInput {
path: input.path.as_path(),
sheet_name: input.sheet_name.as_deref(),
})
.collect::<Vec<_>>();
let result = query_forge::run_query_with_params_multi_inputs(
&workbook_inputs,
&query,
¶ms,
!cli.no_headers,
)?;
output::write_query_result(&result, cli.output.as_deref(), cli.format)?;
Ok(())
}