#![doc = include_str!("../README.md")]
mod args;
mod command;
mod runner;
use std::io::{stdout, IsTerminal};
use clap::Parser;
use miette::IntoDiagnostic;
pub(crate) type ExitResult = miette::Result<std::process::ExitCode>;
fn main() -> ExitResult {
simple_logger::SimpleLogger::new()
.with_level(log::LevelFilter::Warn)
.with_colors(stdout().is_terminal())
.env()
.init()
.into_diagnostic()?;
let Options { command, default } = Options::parse();
command.unwrap_or_else(|| default.into()).invoke()
}
#[derive(Parser)]
#[clap(author, version, about = "The convenience of SQLite – but with PostgreSQL", long_about = None)]
struct Options {
#[clap(subcommand)]
command: Option<command::Command>,
#[clap(flatten)]
default: command::Default,
}