diff options
author | Ken Matsui <26405363+ken-matsui@users.noreply.github.com> | 2021-11-10 17:02:17 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-10 09:02:17 +0100 |
commit | 6d60d83e5808d3ccc5073f9f92368f38b8f3ae41 (patch) | |
tree | 89d7c43cbdf7e71c6e6c11a20bf96379904e39a0 /zellij-utils/src | |
parent | 03f58fc184bc1be47a8da526563e60a21a1fced0 (diff) |
fix(envs): Unify operation of Zellij environment variables (#842)
Diffstat (limited to 'zellij-utils/src')
-rw-r--r-- | zellij-utils/src/consts.rs | 7 | ||||
-rw-r--r-- | zellij-utils/src/envs.rs | 24 | ||||
-rw-r--r-- | zellij-utils/src/input/mod.rs | 3 | ||||
-rw-r--r-- | zellij-utils/src/lib.rs | 1 |
4 files changed, 30 insertions, 5 deletions
diff --git a/zellij-utils/src/consts.rs b/zellij-utils/src/consts.rs index bcb4ea4aa..f20dadaac 100644 --- a/zellij-utils/src/consts.rs +++ b/zellij-utils/src/consts.rs @@ -1,10 +1,10 @@ //! Zellij program-wide constants. +use crate::envs; use crate::shared::set_permissions; use directories_next::ProjectDirs; use lazy_static::lazy_static; use nix::unistd::Uid; -use once_cell::sync::OnceCell; use std::path::PathBuf; use std::{env, fs}; @@ -26,11 +26,10 @@ const fn system_default_data_dir() -> &'static str { lazy_static! { static ref UID: Uid = Uid::current(); - pub static ref SESSION_NAME: OnceCell<String> = OnceCell::new(); pub static ref ZELLIJ_PROJ_DIR: ProjectDirs = ProjectDirs::from("org", "Zellij Contributors", "Zellij").unwrap(); pub static ref ZELLIJ_SOCK_DIR: PathBuf = { - let mut ipc_dir = env::var("ZELLIJ_SOCKET_DIR").map_or_else( + let mut ipc_dir = envs::get_socket_dir().map_or_else( |_| { ZELLIJ_PROJ_DIR .runtime_dir() @@ -45,7 +44,7 @@ lazy_static! { let mut sock_dir = ZELLIJ_SOCK_DIR.clone(); fs::create_dir_all(&sock_dir).unwrap(); set_permissions(&sock_dir).unwrap(); - sock_dir.push(SESSION_NAME.get().unwrap()); + sock_dir.push(envs::get_session_name().unwrap()); sock_dir }; pub static ref ZELLIJ_TMP_DIR: PathBuf = diff --git a/zellij-utils/src/envs.rs b/zellij-utils/src/envs.rs new file mode 100644 index 000000000..971def6e5 --- /dev/null +++ b/zellij-utils/src/envs.rs @@ -0,0 +1,24 @@ +/// Uniformly operates ZELLIJ* environment variables +use anyhow::Result; +use std::env::{set_var, var}; + +pub const ZELLIJ_ENV_KEY: &str = "ZELLIJ"; +pub fn get_zellij() -> Result<String> { + Ok(var(ZELLIJ_ENV_KEY)?) +} +pub fn set_zellij(v: String) { + set_var(ZELLIJ_ENV_KEY, v); +} + +pub const SESSION_NAME_ENV_KEY: &str = "ZELLIJ_SESSION_NAME"; +pub fn get_session_name() -> Result<String> { + Ok(var(SESSION_NAME_ENV_KEY)?) +} +pub fn set_session_name(v: String) { + set_var(SESSION_NAME_ENV_KEY, v); +} + +pub const SOCKET_DIR_ENV_KEY: &str = "ZELLIJ_SOCKET_DIR"; +pub fn get_socket_dir() -> Result<String> { + Ok(var(SOCKET_DIR_ENV_KEY)?) +} diff --git a/zellij-utils/src/input/mod.rs b/zellij-utils/src/input/mod.rs index 613b8d172..ca26f78f6 100644 --- a/zellij-utils/src/input/mod.rs +++ b/zellij-utils/src/input/mod.rs @@ -10,6 +10,7 @@ pub mod options; pub mod plugins; pub mod theme; +use crate::envs; use termion::input::TermRead; use zellij_tile::data::{InputMode, Key, ModeInfo, Palette, PluginCapabilities}; @@ -57,7 +58,7 @@ pub fn get_mode_info( InputMode::Session => vec![("d".to_string(), "Detach".to_string())], }; - let session_name = std::env::var("ZELLIJ_SESSION_NAME").ok(); + let session_name = envs::get_session_name().ok(); ModeInfo { mode, diff --git a/zellij-utils/src/lib.rs b/zellij-utils/src/lib.rs index 0aa958300..4ccb25f5e 100644 --- a/zellij-utils/src/lib.rs +++ b/zellij-utils/src/lib.rs @@ -1,6 +1,7 @@ pub mod channels; pub mod cli; pub mod consts; +pub mod envs; pub mod errors; pub mod input; pub mod ipc; |