wingmate-rs/src/init.rs

32 lines
918 B
Rust
Raw Normal View History

2023-11-22 12:45:00 +00:00
mod daemon;
mod config;
pub(crate) mod error;
2023-11-25 04:46:49 +00:00
use std::env;
2023-11-26 14:18:28 +00:00
use anyhow::Context;
2023-11-22 12:45:00 +00:00
2023-11-26 14:18:28 +00:00
const WINGMATE_CONFIG_PATH: &'static str = "WINGMATE_CONFIG_PATH";
pub async fn start() -> Result<(), error::WingmateInitError> {
2023-11-25 04:46:49 +00:00
let mut vec_search: Vec<String> = Vec::new();
2023-11-26 14:18:28 +00:00
match env::var(WINGMATE_CONFIG_PATH) {
2023-11-25 04:46:49 +00:00
Ok(paths) => {
for p in paths.split(':') {
vec_search.push(String::from(p));
}
},
Err(e) => {
if let env::VarError::NotUnicode(_) = e {
2023-11-26 14:18:28 +00:00
return Err(e).context(format!("reading {} env var", WINGMATE_CONFIG_PATH))
.map_err(|e| {error::WingmateInitError::Other { source: e }} );
2023-11-25 04:46:49 +00:00
} else {
vec_search.push(String::from("/etc/wingmate"));
}
}
}
let config = config::Config::find(vec_search)?;
// dbg!(&config);
2023-11-25 04:46:49 +00:00
daemon::start(config).await
2023-11-22 12:45:00 +00:00
}