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