1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
use std::sync::LazyLock;
pub static ENVIRONMENT: LazyLock<Environment> =
LazyLock::new(Environment::from_environment);
pub struct Environment {
pub root: String,
pub css_external: Option<String>,
pub primary_colour: Option<String>,
pub favicon_external: Option<String>,
pub mathjax: bool,
pub head: Option<String>,
pub header: Option<String>,
pub plain_text_route: Option<String>,
pub condense_links: Vec<String>,
pub condense_links_at_headings: Vec<String>,
pub proxy_by_default: bool,
pub keep_gemini: Option<Vec<String>>,
pub embed_images: Option<String>,
pub http09: bool,
pub http09_port: u16,
}
impl Environment {
fn from_environment() -> Self {
Self {
root: std::env::var("ROOT").unwrap_or_else(|_| {
log::warn!(
"could not use ROOT from environment variables, proceeding with \
default root: gemini://fuwn.me"
);
"gemini://fuwn.me".to_string()
}),
css_external: std::env::var("CSS_EXTERNAL").ok(),
primary_colour: std::env::var("PRIMARY_COLOUR").ok(),
favicon_external: std::env::var("FAVICON_EXTERNAL").ok(),
mathjax: std::env::var("MATHJAX")
.map(|v| v.to_lowercase() == "true")
.unwrap_or(true),
head: std::env::var("HEAD").ok(),
header: std::env::var("HEADER").ok(),
plain_text_route: std::env::var("PLAIN_TEXT_ROUTE").ok(),
condense_links: std::env::var("CONDENSE_LINKS")
.map(|s| s.split(',').map(String::from).collect())
.unwrap_or_default(),
condense_links_at_headings: std::env::var("CONDENSE_LINKS_AT_HEADINGS")
.map(|s| s.split(',').map(String::from).collect())
.unwrap_or_default(),
proxy_by_default: std::env::var("PROXY_BY_DEFAULT")
.map(|v| v.to_lowercase() == "true")
.unwrap_or(true),
keep_gemini: std::env::var("KEEP_GEMINI")
.ok()
.map(|s| s.split(',').map(String::from).collect()),
embed_images: std::env::var("EMBED_IMAGES").ok(),
http09: std::env::var("HTTP09")
.map(|v| v.to_lowercase() == "true")
.unwrap_or(false),
http09_port: std::env::var("HTTP09_PORT")
.ok()
.and_then(|p| p.parse().ok())
.unwrap_or(90),
}
}
}
|