From 65810493828185f1ad4c9f05f8c852dba96f706e Mon Sep 17 00:00:00 2001 From: Thoq Date: Fri, 9 Oct 2026 17:58:18 -0400 Subject: [PATCH] new: remove dirs, replace with simple module --- Cargo.lock | 38 -------------------------------------- Cargo.toml | 1 - src/backend/credentials.rs | 0 src/backend/mod.rs | 1 + src/backend/session.rs | 3 ++- src/helpers/mod.rs | 1 + src/helpers/system.rs | 22 ++++++++++++++++++++++ 7 files changed, 26 insertions(+), 40 deletions(-) create mode 100644 src/backend/credentials.rs create mode 100644 src/helpers/system.rs diff --git a/Cargo.lock b/Cargo.lock index dfb10d9..8a684a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1463,27 +1463,6 @@ dependencies = [ "ctutils", ] -[[package]] -name = "dirs" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d57d423b3c82e89b9a24ca3091fee61f456a26edbd28d26c65906f4bc1dcd8f" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.61.2", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -4750,12 +4729,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - [[package]] name = "orbclient" version = "0.3.55" @@ -5463,16 +5436,6 @@ dependencies = [ "bitflags 2.13.2", ] -[[package]] -name = "redox_users" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60dc65c0ff1a7ae1294b0c67b9f14baf70b644404010370171787bfac1038fc0" -dependencies = [ - "libredox", - "thiserror 2.0.21", -] - [[package]] name = "regex" version = "1.13.1" @@ -6862,7 +6825,6 @@ version = "0.1.0" dependencies = [ "anyhow", "chrono", - "dirs", "dotenvy", "eyeball-im", "futures-util", diff --git a/Cargo.toml b/Cargo.toml index d95632b..b0f758d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,6 @@ serde = { version = "1", features = ["derive"] } serde_json = "1" tracing = "0.1.44" rand = "0.10.3" -dirs = "7.0.0" hex = "0.4.3" dotenvy = "0.15.7" diff --git a/src/backend/credentials.rs b/src/backend/credentials.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/backend/mod.rs b/src/backend/mod.rs index aef04a2..6c589a7 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -2,6 +2,7 @@ mod format; mod session; mod room; mod navigation; +mod credentials; use std::collections::HashMap; use std::sync::{Arc, Mutex}; diff --git a/src/backend/session.rs b/src/backend/session.rs index 20b50a7..3b2e65e 100644 --- a/src/backend/session.rs +++ b/src/backend/session.rs @@ -4,6 +4,7 @@ use anyhow::{Context, Result, bail}; use serde::{Deserialize, Serialize}; use std::{fs, path::PathBuf}; +use crate::helpers; #[derive(Serialize, Deserialize)] pub struct SavedSession { @@ -13,7 +14,7 @@ pub struct SavedSession { } pub fn data_dir() -> PathBuf { - let base: PathBuf = dirs::data_dir().unwrap_or_else(|| PathBuf::from(".")); + let base: PathBuf = helpers::system::data_dir().unwrap_or_else(|| PathBuf::from(".")); // 'TOFU_DATA_DIR' so you can run several accounts side by side during development. std::env::var_os("TOFU_DATA_DIR").map_or_else(|| base.join("tofu"), PathBuf::from) diff --git a/src/helpers/mod.rs b/src/helpers/mod.rs index e69de29..3aaf5b1 100644 --- a/src/helpers/mod.rs +++ b/src/helpers/mod.rs @@ -0,0 +1 @@ +pub mod system; \ No newline at end of file diff --git a/src/helpers/system.rs b/src/helpers/system.rs new file mode 100644 index 0000000..1ba04b7 --- /dev/null +++ b/src/helpers/system.rs @@ -0,0 +1,22 @@ +use std::env; +use std::ffi::OsString; +use std::path::PathBuf; + +pub fn is_absolute_path(path: OsString) -> Option { + let path = PathBuf::from(path); + if path.is_absolute() { + Some(path) + } else { + None + } +} + +pub fn home_dir() -> Option { + env::var("HOME").ok().map(PathBuf::from) +} + +pub fn data_dir() -> Option { + env::var_os("XDG_DATA_HOME") + .and_then(is_absolute_path) + .or_else(|| home_dir().map(|home| home.join(".local/share"))) +}