sqlt 0.3.2

SQL parser, translator, and linter for MySQL, MariaDB, Postgres, MSSQL, SQLite
Documentation
use crate::cli::{TranslateArgs, examples, read_input_text, write_sql};
use crate::error::{Error, Result};
use crate::translate::{self, StderrSink, TranslateOptions};

pub fn run(args: TranslateArgs) -> Result<()> {
    if args.examples {
        examples::print(examples::TRANSLATE);
        return Ok(());
    }
    let from = args
        .from
        .ok_or_else(|| Error::UnknownDialect("--from is required".into()))?;
    let to = args
        .to
        .ok_or_else(|| Error::UnknownDialect("--to is required".into()))?;
    let sql = read_input_text(args.input.as_deref(), args.encoding)?;
    let mut sink = StderrSink::new();
    let opts = TranslateOptions {
        strict: args.strict,
    };
    let out = translate::translate(&sql, from, to, &mut sink, &opts)?;
    write_sql(&out, args.encoding)?;
    Ok(())
}