Browse Source

dotenv: add support for custom env file names (#7861)

Arshad Kazmi 5 years ago
parent
commit
f960e2be6f
2 changed files with 19 additions and 4 deletions
  1. 11 0
      plugins/dotenv/README.md
  2. 8 4
      plugins/dotenv/dotenv.plugin.zsh

+ 11 - 0
plugins/dotenv/README.md

@@ -32,6 +32,17 @@ PORT=3001
 ```
 You can even mix both formats, although it's probably a bad idea.
 
+### ZSH_DOTENV_FILE
+
+You can also modify the name of the file to be loaded with the variable `ZSH_DOTENV_FILE`.
+If the variable isn't set, the plugin will default to use `.env`.
+For example, this will make the plugin look for files named `.dotenv` and load them:
+
+```
+# in ~/.zshrc, before Oh My Zsh is sourced:
+ZSH_DOTENV_FILE=.dotenv
+```
+
 ## Version Control
 
 **It's strongly recommended to add `.env` file to `.gitignore`**, because usually it contains sensitive information such as your credentials, secret keys, passwords etc. You don't want to commit this file, it's supposed to be local only.

+ 8 - 4
plugins/dotenv/dotenv.plugin.zsh

@@ -1,13 +1,13 @@
 source_env() {
-  if [[ -f .env ]]; then
+  if [[ -f $ZSH_DOTENV_FILE ]]; then
     # test .env syntax
-    zsh -fn .env || echo 'dotenv: error when sourcing `.env` file' >&2
+    zsh -fn $ZSH_DOTENV_FILE || echo "dotenv: error when sourcing '$ZSH_DOTENV_FILE' file" >&2
 
     if [[ -o a ]]; then
-      source .env
+      source $ZSH_DOTENV_FILE
     else
       set -a
-      source .env
+      source $ZSH_DOTENV_FILE
       set +a
     fi
   fi
@@ -16,4 +16,8 @@ source_env() {
 autoload -U add-zsh-hook
 add-zsh-hook chpwd source_env
 
+if [[ -z $ZSH_DOTENV_FILE ]]; then
+    ZSH_DOTENV_FILE=.env
+fi
+
 source_env