summaryrefslogtreecommitdiff
path: root/lib/grep.zsh
diff options
context:
space:
mode:
authormattmc3 <mattmc3@gmail.com>2019-11-30 13:49:23 -0500
committerMarc Cornellà <marc.cornella@live.com>2020-03-01 14:04:36 +0100
commit57b178102c0016f5c433054ce981a80dd4b4b73f (patch)
tree336677faf770d4ffd89ce08dac7e366664b3aa9e /lib/grep.zsh
parenta8ed1c4e7ab7e7df3a1e903cde30f94bf6da3e39 (diff)
downloadzsh-57b178102c0016f5c433054ce981a80dd4b4b73f.tar.gz
zsh-57b178102c0016f5c433054ce981a80dd4b4b73f.tar.bz2
zsh-57b178102c0016f5c433054ce981a80dd4b4b73f.zip
Performance enhancement for lib/grep
- Use $ZSH_CACHE_DIR to store the grep alias with all the right features - Expire the cache after 24 hours - See issue #8444
Diffstat (limited to 'lib/grep.zsh')
-rw-r--r--lib/grep.zsh57
1 files changed, 34 insertions, 23 deletions
diff --git a/lib/grep.zsh b/lib/grep.zsh
index 09042e13b..df9146aa4 100644
--- a/lib/grep.zsh
+++ b/lib/grep.zsh
@@ -1,29 +1,40 @@
-# is x grep argument available?
-grep-flag-available() {
- echo | grep $1 "" >/dev/null 2>&1
-}
+# see if we already cached the grep alias in past day
+_grep_alias_cache=("$ZSH_CACHE_DIR"/grep_alias.zsh(Nm-24))
+if (( $#_grep_alias_cache )); then
+ source "$ZSH_CACHE_DIR"/grep_alias.zsh
+else
+ # is x grep argument available?
+ grep-flag-available() {
+ echo | grep $1 "" >/dev/null 2>&1
+ }
-GREP_OPTIONS=""
+ GREP_OPTIONS=""
-# color grep results
-if grep-flag-available --color=auto; then
- GREP_OPTIONS+=" --color=auto"
-fi
+ # color grep results
+ if grep-flag-available --color=auto; then
+ GREP_OPTIONS+=" --color=auto"
+ fi
-# ignore these folders (if the necessary grep flags are available)
-EXC_FOLDERS="{.bzr,CVS,.git,.hg,.svn,.idea,.tox}"
+ # ignore these folders (if the necessary grep flags are available)
+ EXC_FOLDERS="{.bzr,CVS,.git,.hg,.svn,.idea,.tox}"
-if grep-flag-available --exclude-dir=.cvs; then
- GREP_OPTIONS+=" --exclude-dir=$EXC_FOLDERS"
-elif grep-flag-available --exclude=.cvs; then
- GREP_OPTIONS+=" --exclude=$EXC_FOLDERS"
-fi
+ if grep-flag-available --exclude-dir=.cvs; then
+ GREP_OPTIONS+=" --exclude-dir=$EXC_FOLDERS"
+ elif grep-flag-available --exclude=.cvs; then
+ GREP_OPTIONS+=" --exclude=$EXC_FOLDERS"
+ fi
-# export grep, egrep and fgrep settings
-alias grep="grep $GREP_OPTIONS"
-alias egrep="egrep $GREP_OPTIONS"
-alias fgrep="fgrep $GREP_OPTIONS"
+ {
+ # export grep, egrep and fgrep settings
+ echo alias grep="'grep $GREP_OPTIONS'"
+ echo alias egrep="'egrep $GREP_OPTIONS'"
+ echo alias fgrep="'fgrep $GREP_OPTIONS'"
+ } > "$ZSH_CACHE_DIR/grep_alias.zsh"
-# clean up
-unset GREP_OPTIONS EXC_FOLDERS
-unfunction grep-flag-available
+ source "$ZSH_CACHE_DIR/grep_alias.zsh"
+
+ # clean up
+ unset GREP_OPTIONS EXC_FOLDERS
+ unfunction grep-flag-available
+fi
+unset _grep_alias_cache