direnv
- https://github.com/asdf-community/asdf-direnv — enable this?
- https://numtide.com/ - created
direnv install
curl -sfL https://direnv.net/install.sh | bash
.envrc file tips
# use expand_path export KUBECONFIG=$(expand_path ./provision/kubeconfig)
~/.config/direnv/direnvrc populate local .env file
# ~/.config/direnv/direnvrc realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" } update_dotenv() { echo 'Running update dotenv' DOTENVFILE=$(realpath ".env") while IFS='=' read -r name value ; do [ "$name" = "_" ] && continue [ "$name" = "BROWSER" ] && continue [ "$name" = "CDPATH" ] && continue [ "$name" = "GIT_ASKPASS" ] && continue [ "$name" = "HISTTIMEFORMAT" ] && continue [ "$name" = "INFOPATH" ] && continue [ "$name" = "MANPATH" ] && continue [ "$name" = "OLDPWD" ] && continue [ "$name" = "ORIGINAL_XDG_CURRENT_DESKTOP" ] && continue [ "$name" = "PATH" ] && continue [ "$name" = "SHELL" ] && continue [ "$name" = "SHLVL" ] && continue [ "$name" = "TF_PLUGIN_CACHE_DIR" ] && continue [ "$name" = "VIRTUAL_ENV" ] && continue [[ $name = __CF* ]] && continue [[ $name = ASDF_* ]] && continue [[ $name = BASH_* ]] && continue [[ $name = DIRENV_* ]] && continue [[ $name = HISTFILE* ]] && continue [[ $name = HOMEBREW* ]] && continue [[ $name = ITERM_* ]] && continue [[ $name = SSH_* ]] && continue [[ $name = TERM_* ]] && continue [[ $name = VSCODE_* ]] && continue [[ $name = XDG_* ]] && continue [[ $name = XPC_* ]] && continue [[ $name = *ZDOT* ]] && continue if [ -z "$value" ]; then echo "${name}=" continue fi printf '%s="%s"\n' $name "$value" done < <(env|sort) > $DOTENVFILE }
.envrc to write out .env for use with docker
# https://direnv.net/ layout python dotenv_if_exists .build-vars dotenv_if_exists .env-local dotenv_if_exists ./overrides/env-local # Generate .env file for docker-compose, excluding system variables EXCLUDE_VARS=$(cat <<'EOF' __CF* BUNDLED_DEBUGPY_PATH COLORTERM COMMAND_MODE CURSOR_TRACE_ID DIRENV_* DNS_AWS_ACCESS_KEY_ID DNS_AWS_SECRET_ACCESS_KEY GIT_ASKPASS HOME LANG LC_* LOGNAME OLDPWD PAGER PATH PS? PWD SHELL SHLVL USER VSCODE_* ZDOTDIR EOF ) EXCLUDE_PATTERN=$(echo "$EXCLUDE_VARS" | sed 's/\*/\.\*/g; s/?/./g' | sed 's/^/^/' | sed 's/$/=/' | tr '\n' '|' | sed 's/|$//') env | grep -vE "$EXCLUDE_PATTERN" | sort > .env