csvsql 0.1.4

SQL like engine that works on CSV file.
Documentation
#![deny(warnings)]

use std::process::exit;

use clap::Parser;
use csvsql::{
    args::Args, console::work_on_console, engine::Engine, error::CvsSqlError,
    outputer::create_outputer,
};

fn main() {
    if let Err(err) = run() {
        eprintln!("{err}");
        exit(-1);
    };
}

fn run() -> Result<(), CvsSqlError> {
    let args = Args::parse();
    let mut outputer = create_outputer(&args)?;
    let engine = Engine::try_from(&args)?;

    if let Some(commands) = args.command {
        for command in commands {
            for results in engine.execute_commands(&command)? {
                if let Some(out) = outputer.write(&results)? {
                    println!("{out}");
                }
            }
        }
    } else {
        work_on_console(&engine, args.no_console, outputer.as_mut())?;
    };

    Ok(())
}