pub mod definitions;
pub mod stats;
use std::env;
use std::path::PathBuf;
use anyhow::{Context, Result};
use directories::ProjectDirs;
const CONFIG_DIR: &str = "LORE_CONFIG_DIR";
const DATA_DIR: &str = "LORE_DATA_DIR";
fn project_dirs() -> Result<ProjectDirs> {
ProjectDirs::from("", "", "lore").context("could not determine this platform's home directory")
}
fn overridden(variable: &str) -> Option<PathBuf> {
env::var_os(variable)
.filter(|value| !value.is_empty())
.map(PathBuf::from)
}
pub fn user_library() -> Result<PathBuf> {
let directory = match overridden(CONFIG_DIR) {
Some(directory) => directory,
None => project_dirs()?.config_dir().to_path_buf(),
};
Ok(directory.join("commands.yaml"))
}
pub fn stats_database() -> Result<PathBuf> {
let directory = match overridden(DATA_DIR) {
Some(directory) => directory,
None => project_dirs()?.data_dir().to_path_buf(),
};
Ok(directory.join("stats.db"))
}
pub fn sync_dir() -> Result<PathBuf> {
let directory = match overridden(DATA_DIR) {
Some(directory) => directory,
None => project_dirs()?.data_dir().to_path_buf(),
};
Ok(directory.join("sync"))
}