mnemonic-hash-checker: pass config through cli args or env variables
This commit is contained in:
parent
0625c2672a
commit
a7f798702d
|
@ -7,7 +7,7 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
axum = { version = "0.6.20", features = ["headers", "macros", "tracing"] }
|
axum = { version = "0.6.20", features = ["headers", "macros", "tracing"] }
|
||||||
clap = { version = "4.3.19", features = ["derive"] }
|
clap = { version = "4.3.19", features = ["derive", "env"] }
|
||||||
color-eyre = "0.6.2"
|
color-eyre = "0.6.2"
|
||||||
deadpool-postgres = "0.10.5"
|
deadpool-postgres = "0.10.5"
|
||||||
serde = { version = "1.0.181", features = ["serde_derive"] }
|
serde = { version = "1.0.181", features = ["serde_derive"] }
|
||||||
|
|
|
@ -1,10 +1,16 @@
|
||||||
use std::net::SocketAddr;
|
use std::net::SocketAddr;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use axum::{extract::{Path, State}, routing::get, Json, Router};
|
use axum::{
|
||||||
|
extract::{Path, State},
|
||||||
|
routing::get,
|
||||||
|
Json, Router,
|
||||||
|
};
|
||||||
|
|
||||||
use color_eyre::eyre::Result;
|
use color_eyre::eyre::Result;
|
||||||
|
|
||||||
|
use clap::Parser;
|
||||||
|
|
||||||
use deadpool_postgres::{Config, ManagerConfig, Pool, RecyclingMethod, Runtime};
|
use deadpool_postgres::{Config, ManagerConfig, Pool, RecyclingMethod, Runtime};
|
||||||
use tokio_postgres::NoTls;
|
use tokio_postgres::NoTls;
|
||||||
|
|
||||||
|
@ -17,6 +23,27 @@ use tracing_subscriber::prelude::*;
|
||||||
|
|
||||||
use tracing::{debug, info};
|
use tracing::{debug, info};
|
||||||
|
|
||||||
|
#[derive(Parser)]
|
||||||
|
struct CliConfig {
|
||||||
|
#[clap(long, env)]
|
||||||
|
bind_address: Option<SocketAddr>,
|
||||||
|
|
||||||
|
#[clap(long, env, default_value = "postgres")]
|
||||||
|
postgres_dbname: String,
|
||||||
|
|
||||||
|
#[clap(long, env, default_value = "localhost")]
|
||||||
|
postgres_host: String,
|
||||||
|
|
||||||
|
#[clap(long, env)]
|
||||||
|
postgres_password: String,
|
||||||
|
|
||||||
|
#[clap(long, env, default_value = "5432")]
|
||||||
|
postgres_port: u16,
|
||||||
|
|
||||||
|
#[clap(long, env, default_value = "postgres")]
|
||||||
|
postgres_user: String,
|
||||||
|
}
|
||||||
|
|
||||||
fn setup_registry() {
|
fn setup_registry() {
|
||||||
let envfilter = EnvFilter::builder()
|
let envfilter = EnvFilter::builder()
|
||||||
.with_default_directive(LevelFilter::DEBUG.into())
|
.with_default_directive(LevelFilter::DEBUG.into())
|
||||||
|
@ -61,17 +88,20 @@ async fn main() -> Result<()> {
|
||||||
setup_registry();
|
setup_registry();
|
||||||
color_eyre::install()?;
|
color_eyre::install()?;
|
||||||
|
|
||||||
let addr: SocketAddr = "0.0.0.0:8000".parse()?;
|
let cli_config = CliConfig::parse();
|
||||||
let mut config = Config::new();
|
let mut config = Config::new();
|
||||||
config.dbname = Some("postgres".to_string());
|
config.dbname = Some(cli_config.postgres_dbname);
|
||||||
config.host = Some("localhost".to_string());
|
config.host = Some(cli_config.postgres_host);
|
||||||
config.password = Some("sandwich".to_string());
|
config.password = Some(cli_config.postgres_password);
|
||||||
config.port = Some(5432);
|
config.port = Some(cli_config.postgres_port);
|
||||||
config.user = Some("postgres".to_string());
|
config.user = Some(cli_config.postgres_user);
|
||||||
config.manager = Some(ManagerConfig {
|
config.manager = Some(ManagerConfig {
|
||||||
recycling_method: RecyclingMethod::Fast,
|
recycling_method: RecyclingMethod::Fast,
|
||||||
});
|
});
|
||||||
let pool = config.create_pool(Some(Runtime::Tokio1), NoTls)?;
|
let pool = config.create_pool(Some(Runtime::Tokio1), NoTls)?;
|
||||||
|
let addr = cli_config.bind_address.unwrap_or_else(|| {
|
||||||
|
(std::net::Ipv4Addr::new(127, 0, 0, 1), 8000).into()
|
||||||
|
});
|
||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/check/:hash", get(check_hash_slug))
|
.route("/check/:hash", get(check_hash_slug))
|
||||||
|
|
Loading…
Reference in New Issue