From 1687ed8e1d822dcf53b0dd6f255efb6a252b4f31 Mon Sep 17 00:00:00 2001 From: pvincent Date: Mon, 17 Feb 2025 21:54:35 +0400 Subject: [PATCH] bashrc_env_export + eval --- main | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/main b/main index fd911d2..450d026 100755 --- a/main +++ b/main @@ -31,20 +31,40 @@ function bashrc_watch_end { fi } -function bashrc_env_sync { - env_var="$1" - env_value="$2" - if printenv | grep -q "$env_var"; then - real_value=$(eval "echo \$$env_var") - echo "success for $env_var = $real_value" +function _bashrc_env_with_prefix { + arg1="$1" + arg2="$2" + prefix="$3" + if printenv | grep -q "$arg1"; then + real_value=$(eval "echo \$$arg1") + echo "success for $arg1 = $real_value" else - session_line="export ${env_var}=${env_value}" - append_or_replace "^${session_line}.*" "$session_line" "$HOME/.bashrc" &>/dev/null + case "$prefix" in + export) + session_line="export ${arg1}=${arg2}" + regex="$session_line" + ;; + eval) + session_line="eval \"\$($arg2)\"" + regex="eval \"\\\$\\($arg2\\)\"" + ;; + *) echo "unknown prefix $prefix" && exit 10 ;; + esac + append_or_replace "$regex" "$session_line" "$HOME/.bashrc" &>/dev/null eval "$session_line" set +e eval "BASHRC_LINES=$BASHRC_LINES $0" exit $? fi + +} + +function bashrc_env_export { + _bashrc_env_with_prefix "$1" "$2" 'export' +} + +function bashrc_env_eval { + _bashrc_env_with_prefix "$1" "$2" 'eval' } # main @@ -53,8 +73,9 @@ set -Eeu bashrc_watch_start echo 'init' -bashrc_env_sync 'SESSION_RESTART' true -bashrc_env_sync 'TOTO' fluo +bashrc_env_export 'SESSION_RESTART' true +bashrc_env_export 'TOTO' fluo +bashrc_env_eval 'MISE_SHELL' "$HOME/.local/bin/mise activate bash" echo 'end' bashrc_watch_end