diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e2fb9e5bcd..cadc8cd9aec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ All notable changes to this project will be documented in this file. - *(gui)* Background terminals and more ([#2303](https://github.com/atuinsh/atuin/issues/2303)) - *(gui)* Clean up home page, fix a few bugs ([#2304](https://github.com/atuinsh/atuin/issues/2304)) - *(history)* Filter out various environment variables containing potential secrets ([#2174](https://github.com/atuinsh/atuin/issues/2174)) +- *(init)* Allow splitting environment variable loading from remainder of setup - *(tui)* Configurable prefix character ([#2157](https://github.com/atuinsh/atuin/issues/2157)) - *(tui)* Customizable Themes ([#2236](https://github.com/atuinsh/atuin/issues/2236)) - *(tui)* Fixed preview height option ([#2286](https://github.com/atuinsh/atuin/issues/2286)) diff --git a/crates/atuin/src/command/client/init.rs b/crates/atuin/src/command/client/init.rs index 8238a69bcf7..014f8aa0296 100644 --- a/crates/atuin/src/command/client/init.rs +++ b/crates/atuin/src/command/client/init.rs @@ -21,6 +21,14 @@ pub struct Cmd { /// Disable the binding of the Up Arrow key to atuin #[clap(long)] disable_up_arrow: bool, + + /// Only import environment variables (useful for `~/.zsh_env` or `~/.bash_env`) + #[clap(long)] + only_env: bool, + + /// Skip importing environment variables (useful if already imported) + #[clap(long)] + skip_env: bool, } #[derive(Clone, Copy, ValueEnum, Debug)] @@ -122,6 +130,8 @@ $env.config = ( var_store, self.disable_up_arrow, self.disable_ctrl_r, + self.only_env, + self.skip_env, ) .await?; } @@ -131,6 +141,8 @@ $env.config = ( var_store, self.disable_up_arrow, self.disable_ctrl_r, + self.only_env, + self.skip_env, ) .await?; } @@ -140,6 +152,8 @@ $env.config = ( var_store, self.disable_up_arrow, self.disable_ctrl_r, + self.only_env, + self.skip_env, ) .await?; } @@ -150,6 +164,8 @@ $env.config = ( var_store, self.disable_up_arrow, self.disable_ctrl_r, + self.only_env, + self.skip_env, ) .await?; } diff --git a/crates/atuin/src/command/client/init/bash.rs b/crates/atuin/src/command/client/init/bash.rs index 27871bee58f..fbef4b162bb 100644 --- a/crates/atuin/src/command/client/init/bash.rs +++ b/crates/atuin/src/command/client/init/bash.rs @@ -20,14 +20,20 @@ pub async fn init( vars: VarStore, disable_up_arrow: bool, disable_ctrl_r: bool, + only_env: bool, + skip_env: bool, ) -> Result<()> { - init_static(disable_up_arrow, disable_ctrl_r); + if !only_env { + init_static(disable_up_arrow, disable_ctrl_r); - let aliases = atuin_dotfiles::shell::bash::alias_config(&aliases).await; - let vars = atuin_dotfiles::shell::bash::var_config(&vars).await; + let aliases = atuin_dotfiles::shell::bash::alias_config(&aliases).await; + println!("{aliases}"); + } - println!("{aliases}"); - println!("{vars}"); + if !skip_env { + let vars = atuin_dotfiles::shell::bash::var_config(&vars).await; + println!("{vars}"); + } Ok(()) } diff --git a/crates/atuin/src/command/client/init/fish.rs b/crates/atuin/src/command/client/init/fish.rs index fe58dbed4a4..590a989ea54 100644 --- a/crates/atuin/src/command/client/init/fish.rs +++ b/crates/atuin/src/command/client/init/fish.rs @@ -39,14 +39,20 @@ pub async fn init( vars: VarStore, disable_up_arrow: bool, disable_ctrl_r: bool, + only_env: bool, + skip_env: bool, ) -> Result<()> { - init_static(disable_up_arrow, disable_ctrl_r); + if !only_env { + init_static(disable_up_arrow, disable_ctrl_r); - let aliases = atuin_dotfiles::shell::fish::alias_config(&aliases).await; - let vars = atuin_dotfiles::shell::fish::var_config(&vars).await; + let aliases = atuin_dotfiles::shell::fish::alias_config(&aliases).await; + println!("{aliases}"); + } - println!("{aliases}"); - println!("{vars}"); + if !skip_env { + let vars = atuin_dotfiles::shell::fish::var_config(&vars).await; + println!("{vars}"); + } Ok(()) } diff --git a/crates/atuin/src/command/client/init/xonsh.rs b/crates/atuin/src/command/client/init/xonsh.rs index 8febcc92eb2..7c1603c3fd8 100644 --- a/crates/atuin/src/command/client/init/xonsh.rs +++ b/crates/atuin/src/command/client/init/xonsh.rs @@ -25,14 +25,20 @@ pub async fn init( vars: VarStore, disable_up_arrow: bool, disable_ctrl_r: bool, + only_env: bool, + skip_env: bool, ) -> Result<()> { - init_static(disable_up_arrow, disable_ctrl_r); + if !only_env { + init_static(disable_up_arrow, disable_ctrl_r); - let aliases = atuin_dotfiles::shell::xonsh::alias_config(&aliases).await; - let vars = atuin_dotfiles::shell::xonsh::var_config(&vars).await; + let aliases = atuin_dotfiles::shell::xonsh::alias_config(&aliases).await; + println!("{aliases}"); + } - println!("{aliases}"); - println!("{vars}"); + if !skip_env { + let vars = atuin_dotfiles::shell::xonsh::var_config(&vars).await; + println!("{vars}"); + } Ok(()) } diff --git a/crates/atuin/src/command/client/init/zsh.rs b/crates/atuin/src/command/client/init/zsh.rs index 1b5b3b7721e..e3019f5da7f 100644 --- a/crates/atuin/src/command/client/init/zsh.rs +++ b/crates/atuin/src/command/client/init/zsh.rs @@ -33,14 +33,20 @@ pub async fn init( vars: VarStore, disable_up_arrow: bool, disable_ctrl_r: bool, + only_env: bool, + skip_env: bool, ) -> Result<()> { - init_static(disable_up_arrow, disable_ctrl_r); + if !only_env { + init_static(disable_up_arrow, disable_ctrl_r); - let aliases = atuin_dotfiles::shell::zsh::alias_config(&aliases).await; - let vars = atuin_dotfiles::shell::zsh::var_config(&vars).await; + let aliases = atuin_dotfiles::shell::zsh::alias_config(&aliases).await; + println!("{aliases}"); + } - println!("{aliases}"); - println!("{vars}"); + if !skip_env { + let vars = atuin_dotfiles::shell::zsh::var_config(&vars).await; + println!("{vars}"); + } Ok(()) }