summaryrefslogtreecommitdiff
path: root/plugins/dotenv/dotenv.plugin.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/dotenv/dotenv.plugin.zsh')
-rw-r--r--plugins/dotenv/dotenv.plugin.zsh35
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