diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-03 17:11:20 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-03 17:11:20 +0300 |
| commit | 5ed262a43ac7f264a1a7523b6d4507ba4a976604 (patch) | |
| tree | 8de14a54cf67bb8ee656c3536035f68c7703a01a /src/config.rs | |
| parent | f159ef69ffe59fd327a4a4f3c4a53aaea567b32a (diff) | |
fix: isolate debug runtime paths and block duplicate herdr instances
Diffstat (limited to 'src/config.rs')
| -rw-r--r-- | src/config.rs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/config.rs b/src/config.rs index c901c2d6..d5417421 100644 --- a/src/config.rs +++ b/src/config.rs @@ -6,6 +6,24 @@ use serde::Deserialize; pub const CONFIG_PATH_ENV_VAR: &str = "HERDR_CONFIG_PATH"; use tracing::warn; +pub fn app_dir_name() -> &'static str { + if cfg!(debug_assertions) { + "herdr-dev" + } else { + "herdr" + } +} + +pub fn config_dir() -> PathBuf { + if let Ok(dir) = std::env::var("XDG_CONFIG_HOME") { + PathBuf::from(dir).join(app_dir_name()) + } else if let Ok(home) = std::env::var("HOME") { + PathBuf::from(home).join(format!(".config/{}", app_dir_name())) + } else { + PathBuf::from(format!("/tmp/{}", app_dir_name())) + } +} + use crate::detect::Agent; #[derive(Debug, Clone, Deserialize)] @@ -705,13 +723,7 @@ pub fn config_path() -> PathBuf { if let Ok(path) = std::env::var(CONFIG_PATH_ENV_VAR) { return PathBuf::from(path); } - if let Ok(dir) = std::env::var("XDG_CONFIG_HOME") { - PathBuf::from(dir).join("herdr/config.toml") - } else if let Ok(home) = std::env::var("HOME") { - PathBuf::from(home).join(".config/herdr/config.toml") - } else { - PathBuf::from("/tmp/herdr/config.toml") - } + config_dir().join("config.toml") } fn upsert_top_level_bool(content: &str, key: &str, value: bool) -> String { |
