use std::path::PathBuf;
use serde::{Deserialize, Serialize};
use crate::SubConfigPath;
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct CommonConfig {
override_from: Option<String>,
pub base_path: PathBuf,
}
impl Default for CommonConfig {
fn default() -> Self {
let base_path = dirs_next::home_dir()
.unwrap_or_else(|| PathBuf::from("."))
.join(PathBuf::from(".tari"));
Self {
override_from: None,
base_path,
}
}
}
impl SubConfigPath for CommonConfig {
fn main_key_prefix() -> &'static str {
"common"
}
}
impl CommonConfig {
pub fn base_path(&self) -> &PathBuf {
&self.base_path
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn default_common_config() {
let default_common_config = CommonConfig::default();
assert!(default_common_config.override_from.is_none());
assert_eq!(
*default_common_config.base_path(),
dirs_next::home_dir()
.unwrap_or_else(|| PathBuf::from("."))
.join(PathBuf::from(".tari"))
);
}
#[test]
fn main_key_prefix_test() {
assert_eq!(CommonConfig::main_key_prefix(), "common");
}
}