#!/bin/sh
#
function die() { echo "$*"; exit 1; }

if [ -z "$1" ]; then
    echo "$0 - mv Maildir files older than <age> days to the 'old' tree"
    echo
    echo "usage: $0 <age>"
    echo
    echo " <age> is the age of mails to archive (in days)"
    echo
exit 1
fi
AGE=$1

cd $HOME/Maildir || die "Couldn't cd to $HOME/Maildir"
[ $(basename $(pwd)) = "Maildir" ] || die "Must be in directory Maildir"

# Make sure there are Maildirs in old corresponding to all non-old Maildirs
find . \
          \( -path './old' -prune \) \
       -o \( -path './inbox' -prune \) \
       -o \( -path './logcheck' -prune \) \
       -o \( -path './memberships' -prune \) \
       -o \( -path './postponed' -prune \) \
       -o \( -path './projects' -prune \) \
       -o \( -path './rss' -prune \) \
       -o \( -path './save' -prune \) \
       -o \( -path './spam' -prune \) \
       -o \( -path './to_be_filed' -prune \) \
       -o \( -path './voicemail' -prune \) \
       -o -type d \
           -exec mkdir -p old/\{\} \;

# Move all files greater than $AGE, except for old and inbox trees
find . \
          \( -path './old' -prune \) \
       -o \( -path './inbox' -prune \) \
       -o \( -path './logcheck' -prune \) \
       -o \( -path './memberships' -prune \) \
       -o \( -path './postponed' -prune \) \
       -o \( -path './projects' -prune \) \
       -o \( -path './rss' -prune \) \
       -o \( -path './save' -prune \) \
       -o \( -path './spam' -prune \) \
       -o \( -path './to_be_filed' -prune \) \
       -o \( -path './voicemail' -prune \) \
       -o -type f -mtime +$AGE \
           -exec mv \{\} old/\{\} \;

