summaryrefslogtreecommitdiff
path: root/plugins/dotenv/dotenv.plugin.zsh
blob: d4a6db8f842c3856ad5424c578b4bfc4dd64dd7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
source_env() {
  if [[ -f $ZSH_DOTENV_FILE ]]; then
    # confirm before sourcing .env file
    local confirmation
    echo -n "dotenv: source '$ZSH_DOTENV_FILE' file in the directory? (Y/n) "
    if read -k 1 confirmation && [[ $confirmation = [nN] ]]; then
      return
    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