Files
sea-orm-generator/src/main.rs
2025-04-17 22:05:58 +04:00

43 lines
1.1 KiB
Rust

// mod config;
mod generator;
use clap::Parser;
use color_eyre::Result;
use tokio::fs;
use toml_edit::DocumentMut;
use tracing_subscriber::{fmt, layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
#[derive(Parser, Debug)]
pub struct Args {
#[clap(short, long, default_value = "generator.toml")]
config: String,
#[clap(short, long, env = "DATABASE_URL")]
database_url: String,
#[clap(short, long)]
workdir: Option<String>,
#[clap(short, long, default_value = "true")]
rustfmt: bool,
}
#[tokio::main]
async fn main() -> Result<()> {
color_eyre::install()?;
tracing_subscriber::registry()
.with(fmt::layer())
.with(EnvFilter::from_default_env())
.init();
let args = Args::parse();
tracing::info!(?args);
// change workdir
if let Some(workdir) = &args.workdir {
std::env::set_current_dir(workdir)?;
}
let config = fs::read_to_string(&args.config).await?;
let root_config = config.parse::<DocumentMut>()?;
generator::generate(args, root_config).await?;
Ok(())
}