# Clean up directory - remove well known tempfiles
emulate -L zsh

setopt HIST_SUBST_PATTERN
local -a TEXTEMPFILES GHCTEMPFILES PYTEMPFILES
local -a -U FILES

[[ -d "$1" ]] && { TRAPEXIT() { popd -q } && pushd -q "$1" }

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)'/))

GHCTEMPFILES=(*.(hs|lhs)(N-.:r:s/%/'.(hi|hc|(p|u|s)_(o|hi))(.N)'/))

PYTEMPFILES=(*.py(N-.:s/%py/'(pyc|pyo)(.N)'/))

LONELY_MOOD_FILES=((*.mood)(.NDe:'local -a AF;AF=( ${${REPLY#.}%mood}(mp3|flac|ogg|asf|wmv|aac)(N-.) ); [[ -z "$AF" ]]':))

ZSH_COMPILED=(*.zwc(.NDe:'[[ -f ${REPLY%.zwc} && ${REPLY%.zwc} -nt ${REPLY} ]]':))

FILES=(
    *~(.N)
    \#*\#(.N)
    *.o(.N)
    *.d(.N)
    *.d.<->(.N)
    a.out(.N)
    (*.|)core(|.<->)(.N)
    *.cmo(.N)
    *.cmi(.N)
    .*.swp(.N)
    *.(orig|rej)(.DN)
    *.dpkg-(old|dist|new)(DN)
    ._(cfg|mrg)[0-9][0-9][0-9][0-9]_*(N)
    ${~TEXTEMPFILES}
    ${~GHCTEMPFILES}
    ${~PYTEMPFILES}
    ${LONELY_MOOD_FILES}
    ${ZSH_COMPILED}
)

local NBFILES=${#FILES}
local CURDIRSUDO=""

[[ ! -w ./ ]] && CURDIRSUDO=$SUDO

if [[ $NBFILES > 0 ]] ; then
    print "in $PWD:"
    print -f "  %s\n" $FILES
    local ans
    echo -n "Remove these files? [y/N] "
    read -q ans; echo
    if [[ $ans == [yY] ]] ; then
        $CURDIRSUDO rm ${FILES}
        echo ">> $PWD purged, $NBFILES files removed"
    else
        echo "Ok. .. then not.."
    fi
fi
