use super::Env;
use balls::layout::Xdg as BallsXdg;
use std::path::PathBuf;
impl Env {
pub fn balls_layout(&self) -> BallsXdg {
let space = crate::world::marks::space(self);
BallsXdg::with(
&self.home_dir(),
Some(&space.config.to_string_lossy()),
Some(&space.state.to_string_lossy()),
)
}
pub(crate) fn balls_state_home(&self) -> PathBuf {
match self.get("XDG_STATE_HOME") {
Some(base) => PathBuf::from(base),
None => self.home_dir().join(".local/state"),
}
}
pub fn balls_state_root(&self) -> PathBuf {
self.balls_layout().state_dir()
}
pub fn balls_clones_dir(&self) -> PathBuf {
self.balls_layout().clones_dir()
}
fn litany_home(&self) -> Option<PathBuf> {
self.get("LITANY_HOME").map(PathBuf::from)
}
pub fn litany_config_root(&self) -> PathBuf {
self.litany_home()
.unwrap_or_else(|| self.xdg("XDG_CONFIG_HOME", ".config", "litany"))
}
pub fn litany_data_root(&self) -> PathBuf {
self.litany_home()
.unwrap_or_else(|| self.xdg("XDG_DATA_HOME", ".local/share", "litany"))
}
}