43 lines
1.1 KiB
Rust
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(())
|
|
}
|