aboutsummaryrefslogtreecommitdiff
path: root/src/config.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-03 17:11:20 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-03 17:11:20 +0300
commit5ed262a43ac7f264a1a7523b6d4507ba4a976604 (patch)
tree8de14a54cf67bb8ee656c3536035f68c7703a01a /src/config.rs
parentf159ef69ffe59fd327a4a4f3c4a53aaea567b32a (diff)
fix: isolate debug runtime paths and block duplicate herdr instances
Diffstat (limited to 'src/config.rs')
-rw-r--r--src/config.rs26
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 {