From e6831f59011128e10be2e84f1da6a56fe0416652 Mon Sep 17 00:00:00 2001 From: Jonas Maier <> Date: Fri, 6 Mar 2026 14:29:41 +0100 Subject: create config and data dir --- src/basedir.rs | 31 +++++++++++++++++++++++++++++++ src/main.rs | 10 ++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/basedir.rs diff --git a/src/basedir.rs b/src/basedir.rs new file mode 100644 index 0000000..e5bcff7 --- /dev/null +++ b/src/basedir.rs @@ -0,0 +1,31 @@ +use std::{env, path::PathBuf}; + +const NAME: &str = env!("CARGO_PKG_NAME"); + +pub fn home() -> PathBuf { + if let Ok(home) = env::var("HOME") { + PathBuf::from(home) + } else { + PathBuf::new() + } +} + +fn alt_dir() -> PathBuf { + PathBuf::from(format!("{}/.{}", home().to_string_lossy(), NAME)) +} + +pub fn data_dir() -> PathBuf { + if let Ok(base) = env::var("XDG_DATA_HOME") { + PathBuf::from(base).join(NAME) + } else { + alt_dir() + } +} + +pub fn config_dir() -> PathBuf { + if let Ok(base) = env::var("XDG_CONFIG_HOME") { + PathBuf::from(base).join(NAME) + } else { + alt_dir() + } +} diff --git a/src/main.rs b/src/main.rs index 95d24d5..7c51497 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,12 @@ use std::ffi::OsStr; +use std::fs; use std::io::{self, IsTerminal, Read, Write}; use std::os::unix::ffi::OsStrExt; use std::os::unix::io::AsRawFd; use std::path::Path; use std::process::{Command, Stdio}; +use std::thread::sleep; +use std::time::Duration; pub mod completion; pub mod cursor; @@ -13,6 +16,7 @@ pub mod parse; pub mod raw; pub mod reload; pub mod run; +mod basedir; use linebuf::LineBuf; use raw::*; @@ -146,6 +150,9 @@ fn event_loop() { let raw = ScopedRawMode::on_fd(fd); raw.enable(); + fs::create_dir_all(basedir::config_dir()).unwrap(); + fs::create_dir_all(basedir::data_dir()).unwrap(); + let mut se = Session { raw, line: LineBuf::new(), @@ -327,6 +334,9 @@ fn main() { } } } + + // prevent incredibly fast panic loops + sleep(Duration::from_secs(1)); } println!("bye"); -- cgit v1.2.3