From 7b3954dda7084362043a87ea4dacaede3d5b41ec Mon Sep 17 00:00:00 2001 From: Alexandre Nicastro Date: Fri, 6 Oct 2017 23:28:43 -0300 Subject: [PATCH] Stop error "permission denied: /npm_completion" --- plugins/npm/npm.plugin.zsh | 39 ++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/plugins/npm/npm.plugin.zsh b/plugins/npm/npm.plugin.zsh index 43aedc36d..e76fcd66e 100644 --- a/plugins/npm/npm.plugin.zsh +++ b/plugins/npm/npm.plugin.zsh @@ -1,12 +1,44 @@ (( $+commands[npm] )) && { + + # Check if ZSH_CACHE_DIR is set. + # If not, proceeds to find any existing directories containing npm_completion. + # If can't find any, defaults to ZSH_CACHE_DEFAULT_DIR and sets ZSH_CACHE_DIR accordingly. + if [ !${ZSH_CACHE_DIR} ]; then + + # Default cache directory in case none was found containing npm_completion file. + ZSH_CACHE_DEFAULT_DIR="${HOME}/.oh-my-zsh/cache" + + # List of directories to look for npm_completion file. + ZSH_CACHE_POSSIBLE_DIR=( + "${HOME}/.oh-my-zsh/cache" + "${HOME}/.zsh/cache" + "${HOME}/.antigen/bundles/robbyrussell/oh-my-zsh/cache" + "${HOME}/.tmp/cache" + ) + + # Loop list of possible cache directories containing npm_completion file + # and set ZSH_CACHE_DIR to the first found. + for d in "${ZSH_CACHE_POSSIBLE_DIR[@]}"; do + # Exits loop if previous iteration already found an existing ${d}/npm_completion + # & already set ZSH_CACHE_DIR to ${d}. + [ ${ZSH_CACHE_DIR} ] && break + + # If current exists then sets ZSH_CACHE_DIR to it + [ -f "${d}/npm_completion" ] && ZSH_CACHE_DIR=${d} + done + + # If ZSH_CACHE_DIR still not set, then set to ZSH_CACHE_DEFAULT_DIR. + [ -z ${ZSH_CACHE_DIR} ] && ZSH_CACHE_DIR=${ZSH_CACHE_DEFAULT_DIR} + fi + __NPM_COMPLETION_FILE="${ZSH_CACHE_DIR}/npm_completion" - if [[ ! -f $__NPM_COMPLETION_FILE ]]; then + if [ ! -f $__NPM_COMPLETION_FILE ]; then npm completion >! $__NPM_COMPLETION_FILE 2>/dev/null - [[ $? -ne 0 ]] && rm -f $__NPM_COMPLETION_FILE + [ $? -ne 0 ] && rm -f $__NPM_COMPLETION_FILE fi - [[ -f $__NPM_COMPLETION_FILE ]] && source $__NPM_COMPLETION_FILE + [ -f $__NPM_COMPLETION_FILE ] && source $__NPM_COMPLETION_FILE unset __NPM_COMPLETION_FILE } @@ -43,4 +75,3 @@ alias npmst="npm start" # Run npm test alias npmt="npm test" -