59 lines
1.5 KiB
Rust
59 lines
1.5 KiB
Rust
#![feature(format_args_capture)]
|
|
|
|
fn main() {
|
|
if std::fs::metadata("./src/location.rs").is_ok() {
|
|
return;
|
|
}
|
|
if let Ok(contents) = std::fs::read_to_string("../.env") {
|
|
for line in contents.lines() {
|
|
if line.starts_with('#') {
|
|
continue;
|
|
}
|
|
let parts: Vec<&str> = line.split('=').collect();
|
|
match (parts.get(0), parts.get(1)) {
|
|
(Some(k), Some(v)) => std::env::set_var(k, v),
|
|
_ => continue,
|
|
}
|
|
}
|
|
}
|
|
|
|
let addr = std::env::var("JIRS_SERVER_BIND").unwrap_or_else(|_| "0.0.0.0".to_string());
|
|
let addr = if addr.as_str() == "0.0.0.0" || addr.as_str() == "localhost" {
|
|
"localhost"
|
|
} else {
|
|
addr.as_str()
|
|
}
|
|
.to_string();
|
|
let port = std::env::var("JIRS_SERVER_PORT").unwrap_or_else(|_| "80".to_string());
|
|
let port = match port.as_str() {
|
|
"80" | "8080" | "443" => "".to_string(),
|
|
_ => format!(":{}", port),
|
|
};
|
|
let addr = format!("{}{}", addr, port);
|
|
|
|
std::fs::write(
|
|
"./src/location.rs",
|
|
format!(
|
|
"
|
|
pub fn host_url() -> &'static str {{
|
|
if cfg!(debug_assertions) {{
|
|
\"http://{addr}\"
|
|
}} else {{
|
|
\"https://{addr}\"
|
|
}}
|
|
}}
|
|
pub fn ws_url() -> &'static str {{
|
|
if cfg!(debug_assertions) {{
|
|
\"ws://{addr}/ws/\"
|
|
}} else {{
|
|
\"wss://{addr}/ws/\"
|
|
}}
|
|
}}
|
|
",
|
|
addr = addr
|
|
)
|
|
.trim(),
|
|
)
|
|
.unwrap();
|
|
}
|