2025-09-14 16:19:44 -04:00
|
|
|
use anyhow::Result;
|
2025-05-02 23:48:54 -07:00
|
|
|
use clap::Parser as _;
|
|
|
|
|
use dotenvy::dotenv;
|
2025-07-08 14:37:03 -07:00
|
|
|
use interim_models::MIGRATOR;
|
2025-05-02 23:48:54 -07:00
|
|
|
use tracing_subscriber::EnvFilter;
|
|
|
|
|
|
|
|
|
|
use crate::{
|
2025-09-23 13:08:51 -07:00
|
|
|
app::App,
|
2025-07-08 14:37:03 -07:00
|
|
|
cli::{Cli, Commands, serve_command, worker_command},
|
2025-05-02 23:48:54 -07:00
|
|
|
settings::Settings,
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-23 13:08:51 -07:00
|
|
|
mod app;
|
2025-05-02 23:48:54 -07:00
|
|
|
mod auth;
|
|
|
|
|
mod cli;
|
2025-09-23 13:08:51 -07:00
|
|
|
mod errors;
|
2025-10-01 22:36:19 -07:00
|
|
|
mod extractors;
|
2025-09-08 15:56:57 -07:00
|
|
|
mod field_info;
|
2025-05-02 23:48:54 -07:00
|
|
|
mod middleware;
|
2025-07-18 16:20:03 -07:00
|
|
|
mod navigator;
|
2025-10-21 18:58:09 +00:00
|
|
|
mod presentation_form;
|
2025-08-09 00:14:58 -07:00
|
|
|
mod renderable_role_tree;
|
2025-05-26 22:08:21 -07:00
|
|
|
mod routes;
|
2025-05-02 23:48:54 -07:00
|
|
|
mod sessions;
|
|
|
|
|
mod settings;
|
2025-08-04 13:59:42 -07:00
|
|
|
mod user;
|
2025-05-02 23:48:54 -07:00
|
|
|
mod worker;
|
2025-09-23 13:08:51 -07:00
|
|
|
mod workspace_nav;
|
|
|
|
|
mod workspace_pooler;
|
2025-10-01 22:36:19 -07:00
|
|
|
mod workspace_utils;
|
2025-05-02 23:48:54 -07:00
|
|
|
|
|
|
|
|
/// Run CLI
|
|
|
|
|
#[tokio::main]
|
2025-09-14 16:19:44 -04:00
|
|
|
async fn main() -> Result<()> {
|
2025-05-02 23:48:54 -07:00
|
|
|
// Attempt to pre-load .env in case it contains a RUST_LOG variable
|
|
|
|
|
dotenv().ok();
|
|
|
|
|
tracing_subscriber::fmt()
|
|
|
|
|
.with_env_filter(EnvFilter::from_default_env())
|
|
|
|
|
.init();
|
|
|
|
|
|
2025-09-14 16:19:44 -04:00
|
|
|
let settings = Settings::load()?;
|
2025-05-02 23:48:54 -07:00
|
|
|
|
2025-09-14 16:19:44 -04:00
|
|
|
let app = App::from_settings(settings.clone()).await?;
|
2025-05-02 23:48:54 -07:00
|
|
|
|
2025-07-08 14:37:03 -07:00
|
|
|
if settings.run_database_migrations != 0 {
|
2025-09-14 16:19:44 -04:00
|
|
|
MIGRATOR.run(&app.app_db).await?;
|
2025-05-02 23:48:54 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let cli = Cli::parse();
|
|
|
|
|
match &cli.command {
|
2025-09-14 16:19:44 -04:00
|
|
|
Commands::Serve => serve_command(app).await?,
|
|
|
|
|
Commands::Worker(args) => worker_command(args, app).await?,
|
2025-05-02 23:48:54 -07:00
|
|
|
}
|
2025-09-14 16:19:44 -04:00
|
|
|
Ok(())
|
2025-05-02 23:48:54 -07:00
|
|
|
}
|