zsh: purge: make default uppercase
[grml-etc-core.git] / usr_share_grml / zsh / functions / purge
1 # Clean up directory - remove well known tempfiles
2 emulate -L zsh
3
4 setopt HIST_SUBST_PATTERN
5 local -a TEXTEMPFILES GHCTEMPFILES PYTEMPFILES FILES
6
7 TEXTEMPFILES=(*.tex(N:s/%tex/'(log|toc|aux|nav|snm|out|tex.backup|bbl|blg|bib.backup|vrb|lof|lot|hd|idx)(N)'/))
8
9 GHCTEMPFILES=(*.(hs|lhs)(N:r:s/%/'.(hi|hc|(p|u|s)_(o|hi))(N)'/))
10
11 PYTEMPFILES=(*.py(N:s/%py/'(pyc|pyo)(N)'/))
12
13 LONELY_MOOD_FILES=((*.mood)(.NDe:'local -a AF;AF=( ${${REPLY#.}%mood}(mp3|flac|ogg|asf|wmv|aac)(N) ); [[ -z "$AF" ]]':))
14
15 ZSH_COMPILED=(*.zwc(.NDe:'[[ -f ${REPLY%.zwc} && ${REPLY%.zwc} -nt ${REPLY} ]]':))
16
17 FILES=(
18     *~(.N)
19     \#*\#(.N)
20     *.o(.N)
21     a.out(.N)
22     (*.|)core(.N)
23     *.cmo(.N)
24     *.cmi(.N)
25     .*.swp(.N)
26     *.(orig|rej)(.DN)
27     *.dpkg-(old|dist|new)(DN)
28     ._(cfg|mrg)[0-9][0-9][0-9][0-9]_*(N)
29     ${~TEXTEMPFILES}
30     ${~GHCTEMPFILES}
31     ${~PYTEMPFILES}
32     ${LONELY_MOOD_FILES}
33     ${ZSH_COMPILED}
34 )
35
36 local NBFILES=${#FILES}
37 local CURDIRSUDO=""
38
39 [[ ! -w ./ ]] && CURDIRSUDO=$SUDO
40
41 if [[ $NBFILES > 0 ]] ; then
42     print -l $FILES
43     local ans
44     echo -n "Remove these files? [y/N] "
45     read -q ans; echo
46     if [[ $ans == [yY] ]] ; then
47         $CURDIRSUDO rm ${FILES}
48         echo ">> $PWD purged, $NBFILES files removed"
49     else
50         echo "Ok. .. then not.."
51     fi
52 fi