diff options
| author | Jakob Hellermann <jakob.hellermann@protonmail.com> | 2020-07-11 17:34:24 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-11 17:34:24 +0200 | 
| commit | 9cdc2764967f9255fa343e77217d62d2703d5549 (patch) | |
| tree | 7db605db76a8ea3b65b4cb332c0c45b8a29517c0 /plugins/dotenv/dotenv.plugin.zsh | |
| parent | 7deaff71a2be08145d83f0177edbf2dfb3e91262 (diff) | |
| download | zsh-9cdc2764967f9255fa343e77217d62d2703d5549.tar.gz zsh-9cdc2764967f9255fa343e77217d62d2703d5549.tar.bz2 zsh-9cdc2764967f9255fa343e77217d62d2703d5549.zip | |
dotenv: add never option to confirmation prompt (#9102)
Diffstat (limited to 'plugins/dotenv/dotenv.plugin.zsh')
| -rw-r--r-- | plugins/dotenv/dotenv.plugin.zsh | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/plugins/dotenv/dotenv.plugin.zsh b/plugins/dotenv/dotenv.plugin.zsh index ac3210d7f..24f285df5 100644 --- a/plugins/dotenv/dotenv.plugin.zsh +++ b/plugins/dotenv/dotenv.plugin.zsh @@ -5,6 +5,7 @@  # Path to the file containing allowed paths  : ${ZSH_DOTENV_ALLOWED_LIST:="${ZSH_CACHE_DIR:-$ZSH/cache}/dotenv-allowed.list"} +: ${ZSH_DOTENV_DISALLOWED_LIST:="${ZSH_CACHE_DIR:-$ZSH/cache}/dotenv-disallowed.list"}  ## Functions @@ -14,19 +15,26 @@ source_env() {      if [[ "$ZSH_DOTENV_PROMPT" != false ]]; then        local confirmation dirpath="${PWD:A}" -      # make sure there is an allowed file +      # make sure there is an (dis-)allowed file        touch "$ZSH_DOTENV_ALLOWED_LIST" +      touch "$ZSH_DOTENV_DISALLOWED_LIST" + +      # early return if disallowed +      if grep -q "$dirpath" "$ZSH_DOTENV_DISALLOWED_LIST" &>/dev/null; then +        return; +      fi        # check if current directory's .env file is allowed or ask for confirmation        if ! grep -q "$dirpath" "$ZSH_DOTENV_ALLOWED_LIST" &>/dev/null; then          # print same-line prompt and output newline character if necessary -        echo -n "dotenv: found '$ZSH_DOTENV_FILE' file. Source it? ([Y]es/[n]o/[a]lways) " +        echo -n "dotenv: found '$ZSH_DOTENV_FILE' file. Source it? ([Y]es/[n]o/[a]lways/n[e]ver) "          read -k 1 confirmation; [[ "$confirmation" != $'\n' ]] && echo          # check input          case "$confirmation" in            [nN]) return ;;            [aA]) echo "$dirpath" >> "$ZSH_DOTENV_ALLOWED_LIST" ;; +          [eE]) echo "$dirpath" >> "$ZSH_DOTENV_DISALLOWED_LIST"; return ;;            *) ;; # interpret anything else as a yes          esac        fi | 
