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)(.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     a.out(.N)
25     (*.|)core(|.<->)(.N)
26     *.cmo(.N)
27     *.cmi(.N)
28     .*.swp(.N)
29     *.(orig|rej)(.DN)
30     *.dpkg-(old|dist|new)(DN)
31     ._(cfg|mrg)[0-9][0-9][0-9][0-9]_*(N)
32     ${~TEXTEMPFILES}
33     ${~GHCTEMPFILES}
34     ${~PYTEMPFILES}
35     ${LONELY_MOOD_FILES}
36     ${ZSH_COMPILED}
37 )
38
39 local NBFILES=${#FILES}
40 local CURDIRSUDO=""
41
42 [[ ! -w ./ ]] && CURDIRSUDO=$SUDO
43
44 if [[ $NBFILES > 0 ]] ; then
45     print "in $PWD:"
46     print -f "  %s\n" $FILES
47     local ans
48     echo -n "Remove these files? [y/N] "
49     read -q ans; echo
50     if [[ $ans == [yY] ]] ; then
51         $CURDIRSUDO rm ${FILES}
52         echo ">> $PWD purged, $NBFILES files removed"
53     else
54         echo "Ok. .. then not.."
55     fi
56 fi