cdk_mintd/env_vars/
mod.rs1mod common;
7mod info;
8mod ln;
9mod mint_info;
10
11#[cfg(feature = "auth")]
12mod auth;
13#[cfg(feature = "cln")]
14mod cln;
15#[cfg(feature = "fakewallet")]
16mod fake_wallet;
17#[cfg(feature = "grpc-processor")]
18mod grpc_processor;
19#[cfg(feature = "lnbits")]
20mod lnbits;
21#[cfg(feature = "lnd")]
22mod lnd;
23#[cfg(feature = "management-rpc")]
24mod management_rpc;
25
26use std::env;
27use std::str::FromStr;
28
29use anyhow::{anyhow, bail, Result};
30#[cfg(feature = "auth")]
31pub use auth::*;
32#[cfg(feature = "cln")]
33pub use cln::*;
34pub use common::*;
35#[cfg(feature = "fakewallet")]
36pub use fake_wallet::*;
37#[cfg(feature = "grpc-processor")]
38pub use grpc_processor::*;
39pub use ln::*;
40#[cfg(feature = "lnbits")]
41pub use lnbits::*;
42#[cfg(feature = "lnd")]
43pub use lnd::*;
44#[cfg(feature = "management-rpc")]
45pub use management_rpc::*;
46pub use mint_info::*;
47
48use crate::config::{Database, DatabaseEngine, LnBackend, Settings};
49
50impl Settings {
51 pub fn from_env(&mut self) -> Result<Self> {
52 if let Ok(database) = env::var(DATABASE_ENV_VAR) {
53 let engine = DatabaseEngine::from_str(&database).map_err(|err| anyhow!(err))?;
54 self.database = Database { engine };
55 }
56
57 self.info = self.info.clone().from_env();
58 self.mint_info = self.mint_info.clone().from_env();
59 self.ln = self.ln.clone().from_env();
60
61 #[cfg(feature = "auth")]
62 {
63 let auth = self.auth.clone().unwrap_or_default().from_env();
65
66 if auth.openid_discovery != String::default()
68 || auth.openid_client_id != String::default()
69 || auth.mint_max_bat != 0
70 || auth.enabled_mint
71 || auth.enabled_melt
72 || auth.enabled_swap
73 {
74 self.auth = Some(auth);
75 } else {
76 self.auth = None;
77 }
78 }
79
80 #[cfg(feature = "management-rpc")]
81 {
82 self.mint_management_rpc = Some(
83 self.mint_management_rpc
84 .clone()
85 .unwrap_or_default()
86 .from_env(),
87 );
88 }
89
90 match self.ln.ln_backend {
91 #[cfg(feature = "cln")]
92 LnBackend::Cln => {
93 self.cln = Some(self.cln.clone().unwrap_or_default().from_env());
94 }
95 #[cfg(feature = "lnbits")]
96 LnBackend::LNbits => {
97 self.lnbits = Some(self.lnbits.clone().unwrap_or_default().from_env());
98 }
99 #[cfg(feature = "fakewallet")]
100 LnBackend::FakeWallet => {
101 self.fake_wallet = Some(self.fake_wallet.clone().unwrap_or_default().from_env());
102 }
103 #[cfg(feature = "lnd")]
104 LnBackend::Lnd => {
105 self.lnd = Some(self.lnd.clone().unwrap_or_default().from_env());
106 }
107 #[cfg(feature = "grpc-processor")]
108 LnBackend::GrpcProcessor => {
109 self.grpc_processor =
110 Some(self.grpc_processor.clone().unwrap_or_default().from_env());
111 }
112 LnBackend::None => bail!("Ln backend must be set"),
113 #[allow(unreachable_patterns)]
114 _ => bail!("Selected Ln backend is not enabled in this build"),
115 }
116
117 Ok(self.clone())
118 }
119}