diff options
Diffstat (limited to 'plugins/dotenv/dotenv.plugin.zsh')
-rw-r--r-- | plugins/dotenv/dotenv.plugin.zsh | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/plugins/dotenv/dotenv.plugin.zsh b/plugins/dotenv/dotenv.plugin.zsh new file mode 100644 index 000000000..54036bee3 --- /dev/null +++ b/plugins/dotenv/dotenv.plugin.zsh @@ -0,0 +1,35 @@ +source_env() { + if [[ -f $ZSH_DOTENV_FILE ]]; then + if [ "$ZSH_DOTENV_PROMPT" != "false" ]; then + # confirm before sourcing file + local confirmation + # print same-line prompt and output newline character if necessary + echo -n "dotenv: source '$ZSH_DOTENV_FILE' file in the directory? (Y/n) " + read -k 1 confirmation; [[ "$confirmation" != $'\n' ]] && echo + # only bail out if confirmation character is n + if [[ "$confirmation" = [nN] ]]; then + return + fi + fi + + # test .env syntax + zsh -fn $ZSH_DOTENV_FILE || echo "dotenv: error when sourcing '$ZSH_DOTENV_FILE' file" >&2 + + if [[ -o a ]]; then + source $ZSH_DOTENV_FILE + else + set -a + source $ZSH_DOTENV_FILE + set +a + fi + fi +} + +autoload -U add-zsh-hook +add-zsh-hook chpwd source_env + +if [[ -z $ZSH_DOTENV_FILE ]]; then + ZSH_DOTENV_FILE=.env +fi + +source_env |