37 lines
746 B
Rust
37 lines
746 B
Rust
|
use std::net::Ipv4Addr;
|
||
|
use std::path::PathBuf;
|
||
|
|
||
|
|
||
|
pub struct AppConfig {
|
||
|
pub db_path: PathBuf,
|
||
|
pub listen_addr: Ipv4Addr,
|
||
|
pub listen_port: u16,
|
||
|
}
|
||
|
|
||
|
impl Default for AppConfig {
|
||
|
fn default() -> Self {
|
||
|
AppConfig {
|
||
|
db_path: get_or_create_db_path(),
|
||
|
listen_addr: Ipv4Addr::LOCALHOST,
|
||
|
listen_port: 19_923
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
fn get_or_create_db_path() -> PathBuf {
|
||
|
if cfg!(debug_assertions) {
|
||
|
return PathBuf::from("./creddy.db");
|
||
|
}
|
||
|
|
||
|
let mut parent = std::env::var("HOME")
|
||
|
.map(|h| {
|
||
|
let mut p = PathBuf::from(h);
|
||
|
p.push(".config");
|
||
|
p
|
||
|
})
|
||
|
.unwrap_or(PathBuf::from("."));
|
||
|
parent.push("creddy.db");
|
||
|
|
||
|
parent
|
||
|
}
|