22054c427463519346462843ea625a242a2e8124 / frogue / src / main.rs
Raw
use std::env;
use frogue::config::DATABASE_URL_VAR_KEY;
use miette::bail;
#[actix_web::main]
async fn main() -> miette::Result<()> {
// Dirty hack that should probably be removed
match std::env::var(DATABASE_URL_VAR_KEY) {
Ok(_db_url) => {}
Err(std::env::VarError::NotPresent) => unsafe {
std::env::set_var(
DATABASE_URL_VAR_KEY,
concat!(
"sqlite:///tmp/",
env!["CARGO_CRATE_NAME"],
".sqlite?mode=rwc"
),
);
},
Err(e) => {
bail!(
"Unknown error while attempting to read {DATABASE_URL_VAR_KEY} from environment: {e}"
)
}
}
// Check if we're being called as a git hook
let args: Vec<String> = env::args().collect();
if args.len() >= 3 && args[1] == "git-hook" {
let mode = frogue::git_hook::HookMode::from_arg(&args[2])
.ok_or_else(|| miette::miette!("invalid hook mode: {}", args[2]))?;
return frogue::git_hook::run_hook(mode)
.await
.map_err(|e| miette::miette!("{}", e));
}
frogue::run().await
}