cdk_mintd/env_vars/
mod.rs1mod common;
7mod database;
8mod info;
9mod ln;
10mod mint_info;
11
12#[cfg(feature = "auth")]
13mod auth;
14#[cfg(feature = "cln")]
15mod cln;
16#[cfg(feature = "fakewallet")]
17mod fake_wallet;
18#[cfg(feature = "grpc-processor")]
19mod grpc_processor;
20#[cfg(feature = "ldk-node")]
21mod ldk_node;
22#[cfg(feature = "lnbits")]
23mod lnbits;
24#[cfg(feature = "lnd")]
25mod lnd;
26#[cfg(feature = "management-rpc")]
27mod management_rpc;
28#[cfg(feature = "prometheus")]
29mod prometheus;
30
31use std::env;
32use std::str::FromStr;
33
34use anyhow::{anyhow, bail, Result};
35#[cfg(feature = "auth")]
36pub use auth::*;
37#[cfg(feature = "cln")]
38pub use cln::*;
39pub use common::*;
40pub use database::*;
41#[cfg(feature = "fakewallet")]
42pub use fake_wallet::*;
43#[cfg(feature = "grpc-processor")]
44pub use grpc_processor::*;
45#[cfg(feature = "ldk-node")]
46pub use ldk_node::*;
47pub use ln::*;
48#[cfg(feature = "lnbits")]
49pub use lnbits::*;
50#[cfg(feature = "lnd")]
51pub use lnd::*;
52#[cfg(feature = "management-rpc")]
53pub use management_rpc::*;
54pub use mint_info::*;
55#[cfg(feature = "prometheus")]
56pub use prometheus::*;
57
58use crate::config::{DatabaseEngine, LnBackend, Settings};
59
60impl Settings {
61 pub fn from_env(&mut self) -> Result<Self> {
62 if let Ok(database) = env::var(DATABASE_ENV_VAR) {
63 let engine = DatabaseEngine::from_str(&database).map_err(|err| anyhow!(err))?;
64 self.database.engine = engine;
65 }
66
67 if self.database.engine == DatabaseEngine::Postgres {
69 self.database.postgres = Some(
70 self.database
71 .postgres
72 .clone()
73 .unwrap_or_default()
74 .from_env(),
75 );
76 }
77
78 #[cfg(feature = "auth")]
80 {
81 self.auth_database = Some(crate::config::AuthDatabase {
82 postgres: Some(
83 self.auth_database
84 .clone()
85 .unwrap_or_default()
86 .postgres
87 .unwrap_or_default()
88 .from_env(),
89 ),
90 });
91 }
92
93 self.info = self.info.clone().from_env();
94 self.mint_info = self.mint_info.clone().from_env();
95 self.ln = self.ln.clone().from_env();
96
97 #[cfg(feature = "auth")]
98 {
99 let auth = self.auth.clone().unwrap_or_default().from_env();
101
102 if auth.auth_enabled {
104 self.auth = Some(auth);
105 } else {
106 self.auth = None;
107 }
108 }
109
110 #[cfg(feature = "management-rpc")]
111 {
112 self.mint_management_rpc = Some(
113 self.mint_management_rpc
114 .clone()
115 .unwrap_or_default()
116 .from_env(),
117 );
118 }
119
120 #[cfg(feature = "prometheus")]
121 {
122 self.prometheus = Some(self.prometheus.clone().unwrap_or_default().from_env());
123 }
124
125 match self.ln.ln_backend {
126 #[cfg(feature = "cln")]
127 LnBackend::Cln => {
128 self.cln = Some(self.cln.clone().unwrap_or_default().from_env());
129 }
130 #[cfg(feature = "lnbits")]
131 LnBackend::LNbits => {
132 self.lnbits = Some(self.lnbits.clone().unwrap_or_default().from_env());
133 }
134 #[cfg(feature = "fakewallet")]
135 LnBackend::FakeWallet => {
136 self.fake_wallet = Some(self.fake_wallet.clone().unwrap_or_default().from_env());
137 }
138 #[cfg(feature = "lnd")]
139 LnBackend::Lnd => {
140 self.lnd = Some(self.lnd.clone().unwrap_or_default().from_env());
141 }
142 #[cfg(feature = "ldk-node")]
143 LnBackend::LdkNode => {
144 self.ldk_node = Some(self.ldk_node.clone().unwrap_or_default().from_env());
145 }
146 #[cfg(feature = "grpc-processor")]
147 LnBackend::GrpcProcessor => {
148 self.grpc_processor =
149 Some(self.grpc_processor.clone().unwrap_or_default().from_env());
150 }
151 LnBackend::None => bail!("Ln backend must be set"),
152 #[allow(unreachable_patterns)]
153 _ => bail!("Selected Ln backend is not enabled in this build"),
154 }
155
156 Ok(self.clone())
157 }
158}