diff --git a/Cargo.toml b/Cargo.toml index 981fc76..985f80b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,7 @@ codegen-units = 1 [dependencies] actix-web = "4.10" argon2 = { version = "0.5.3", features = ["std"] } +clap = { version = "4.5.37", features = ["derive"] } futures = "0.3" regex = "1.11" serde = { version = "1.0", features = ["derive"] } diff --git a/src/config.rs b/src/config.rs index 27a426e..d5bddb1 100644 --- a/src/config.rs +++ b/src/config.rs @@ -26,8 +26,8 @@ struct WebBuilder { } impl ConfigBuilder { - pub async fn load() -> Result { - let raw = read_to_string("./config.toml").await?; + pub async fn load(path: String) -> Result { + let raw = read_to_string(path).await?; let config = toml::from_str(&raw)?; @@ -39,13 +39,11 @@ impl ConfigBuilder { Web { url: web.url.unwrap_or(String::from("0.0.0.0")), port: web.port.unwrap_or(8080), - ssl: web.ssl.unwrap_or_default(), } } else { Web { url: String::from("0.0.0.0"), port: 8080, - ssl: false, } }; @@ -66,7 +64,6 @@ pub struct Config { pub struct Web { pub url: String, pub port: u16, - pub ssl: bool, } impl Database { diff --git a/src/main.rs b/src/main.rs index 5077e7e..3b036d3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ use actix_web::{App, HttpServer, web}; use argon2::Argon2; +use clap::Parser; use sqlx::{PgPool, Pool, Postgres}; use std::time::SystemTime; mod config; @@ -8,6 +9,14 @@ mod api; type Error = Box; +/// Simple program to greet a person +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +struct Args { + #[arg(short, long, default_value_t = String::from("/etc/gorb/config.toml"))] + config: String, +} + #[derive(Clone)] struct Data { pub pool: Pool, @@ -18,7 +27,9 @@ struct Data { #[tokio::main] async fn main() -> Result<(), Error> { - let config = ConfigBuilder::load().await?.build(); + let args = Args::parse(); + + let config = ConfigBuilder::load(args.config).await?.build(); let web = config.web.clone();