Release new version 0.19.7
[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
6 local -a -U FILES
7
8 [[ -d "$1" ]] && { TRAPEXIT() { popd -q } && pushd -q "$1" }
9
10 TEXTEMPFILES=(*.tex(N-.:s/%tex/'(log|toc|aux|nav|snm|out|tex.backup|bbl|blg|bib.backup|vrb|lof|lot|hd|idx|fdb_latexmk|fls|glo|ilg|ind|synctex.gz)(.N)'/))
11
12 GHCTEMPFILES=(*.(hs|lhs)(N-.:r:s/%/'.(hi|hc|(p|u|s)_(o|hi))(.N)'/))
13
14 PYTEMPFILES=(*.py(N-.:s/%py/'(pyc|pyo)(.N)'/))
15
16 LONELY_MOOD_FILES=((*.mood)(.NDe:'local -a AF;AF=( ${${REPLY#.}%mood}(mp3|flac|ogg|asf|wmv|aac)(N-.) ); [[ -z "$AF" ]]':))
17
18 ZSH_COMPILED=(*.zwc(.NDe:'[[ -f ${REPLY%.zwc} && ${REPLY%.zwc} -nt ${REPLY} ]]':))
19
20 FILES=(
21     *~(.N)
22     \#*\#(.N)
23     *.o(.N)
24     *.d(.N)
25     *.d.<->(.N)
26     a.out(.N)
27     (*.|)core(|.<->)(.N)
28     *.cmo(.N)
29     *.cmi(.N)
30     .*.swp(.N)
31     *.(orig|rej)(.DN)
32     *.dpkg-(old|dist|new)(DN)
33     ._(cfg|mrg)[0-9][0-9][0-9][0-9]_*(N)
34     ${~TEXTEMPFILES}
35     ${~GHCTEMPFILES}
36     ${~PYTEMPFILES}
37     ${LONELY_MOOD_FILES}
38     ${ZSH_COMPILED}
39 )
40
41 local NBFILES=${#FILES}
42 local CURDIRSUDO=""
43
44 [[ ! -w ./ ]] && CURDIRSUDO=$SUDO
45
46 if [[ $NBFILES > 0 ]] ; then
47     print "in $PWD:"
48     print -f "  %s\n" $FILES
49     local ans
50     echo -n "Remove these files? [y/N] "
51     read -q ans; echo
52     if [[ $ans == [yY] ]] ; then
53         $CURDIRSUDO rm ${FILES}
54         echo ">> $PWD purged, $NBFILES files removed"
55     else
56         echo "Ok. .. then not.."
57     fi
58 fi