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