cdk_mintd/env_vars/
ln.rs

1//! Lightning Network common environment variables
2
3use std::env;
4
5use crate::config::Ln;
6
7// LN environment variables
8pub const ENV_LN_BACKEND: &str = "CDK_MINTD_LN_BACKEND";
9pub const ENV_LN_INVOICE_DESCRIPTION: &str = "CDK_MINTD_LN_INVOICE_DESCRIPTION";
10pub const ENV_LN_MIN_MINT: &str = "CDK_MINTD_LN_MIN_MINT";
11pub const ENV_LN_MAX_MINT: &str = "CDK_MINTD_LN_MAX_MINT";
12pub const ENV_LN_MIN_MELT: &str = "CDK_MINTD_LN_MIN_MELT";
13pub const ENV_LN_MAX_MELT: &str = "CDK_MINTD_LN_MAX_MELT";
14
15impl Ln {
16    pub fn from_env(mut self) -> Self {
17        // LnBackend
18        if let Ok(backend_str) = env::var(ENV_LN_BACKEND) {
19            if let Ok(backend) = backend_str.parse() {
20                self.ln_backend = backend;
21            } else {
22                tracing::warn!("Unknown payment backend set in env var will attempt to use config file. {backend_str}");
23            }
24        }
25
26        // Optional invoice description
27        if let Ok(description) = env::var(ENV_LN_INVOICE_DESCRIPTION) {
28            self.invoice_description = Some(description);
29        }
30
31        // Amount fields
32        if let Ok(min_mint_str) = env::var(ENV_LN_MIN_MINT) {
33            if let Ok(amount) = min_mint_str.parse::<u64>() {
34                self.min_mint = amount.into();
35            }
36        }
37
38        if let Ok(max_mint_str) = env::var(ENV_LN_MAX_MINT) {
39            if let Ok(amount) = max_mint_str.parse::<u64>() {
40                self.max_mint = amount.into();
41            }
42        }
43
44        if let Ok(min_melt_str) = env::var(ENV_LN_MIN_MELT) {
45            if let Ok(amount) = min_melt_str.parse::<u64>() {
46                self.min_melt = amount.into();
47            }
48        }
49
50        if let Ok(max_melt_str) = env::var(ENV_LN_MAX_MELT) {
51            if let Ok(amount) = max_melt_str.parse::<u64>() {
52                self.max_melt = amount.into();
53            }
54        }
55
56        self
57    }
58}