X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=gma.sh;h=640c7f3cb4c16955526b0ed771903a96b3d70dff;hb=3f19799fa2d26a502cabe2b689bf5e9d2f80faf5;hp=ae7bdcd6096adc5c1de6bb1914d8f926ee28c59c;hpb=a51bace8358de5f9a293d263480370226b3427a5;p=scripts.git diff --git a/gma.sh b/gma.sh index ae7bdcd..640c7f3 100755 --- a/gma.sh +++ b/gma.sh @@ -19,6 +19,10 @@ set -e +function usage () { + echo "gma.sh [--body] [--from|--to|--fromto] []" +} + RESULT_MBOX="/tmp/gma" if [[ -z "${MAIL_ARCHIVE_DIR}" ]]; then @@ -26,36 +30,81 @@ if [[ -z "${MAIL_ARCHIVE_DIR}" ]]; then exit 1 fi -if [[ $1 ]]; then +HEADER_ONLY="-H" + +while [[ $1 ]]; do + + case $1 in + + "--help"|"-h") + usage + exit 0 + ;; + + "--body") + HEADER_ONLY="" + ;; + + "--keepspam") + KEEP_SPAM=1 + ;; + + "--from") + RE_PREFIX="^From:.*" + ;; + + "--to") + RE_PREFIX="^To:.*" + ;; - PATTERN=$1 + "--fromto") + RE_PREFIX="^(From|To):.*" + ;; - if [[ -z "${PATTERN}" ]]; then - echo "No pattern." >&2 - exit 1 - fi + *) + if [[ ${PATTERN} ]]; then + if [[ ${FILE_PATTERN} ]]; then + usage + exit 1 + else + FILE_PATTERN="${MAIL_ARCHIVE_DIR}/${1}/*/*" + SIZE_FILE_PATTERN="${MAIL_ARCHIVE_DIR}/${1}" + fi + else + PATTERN=$1 + fi + ;; + esac + shift +done - if [[ $2 ]]; then - FILE_PATTERN="${MAIL_ARCHIVE_DIR}/${2}/*/*gz" - SIZE=$(\dus ${MAIL_ARCHIVE_DIR}/${2} | cut -f 1 -d" ") - else - FILE_PATTERN="${MAIL_ARCHIVE_DIR}/*/*/*gz" - SIZE=$(\dus ${MAIL_ARCHIVE_DIR}/ | cut -f 1 -d" ") - fi +if [[ -z "${PATTERN}" ]]; then + usage + exit 1 +fi + +[[ ${FILE_PATTERN} ]] || FILE_PATTERN="${MAIL_ARCHIVE_DIR}/*/*/*" +[[ ${SIZE_FILE_PATTERN} ]] || SIZE_FILE_PATTERN="${MAIL_ARCHIVE_DIR}/" + +SIZE=$(\dus ${SIZE_FILE_PATTERN} | cut -f 1 -d" ") - echo "Looking for ${PATTERN}" - echo " in ${FILE_PATTERN}" - echo " writing result in ${RESULT_MBOX}" +echo "Looking for ${RE_PREFIX}${PATTERN}" +echo " in ${FILE_PATTERN}" +echo " writing result in ${RESULT_MBOX}" + +if [[ ${KEEP_SPAM} ]]; then cat ${FILE_PATTERN} \ | pv -s ${SIZE} -p -t -e - \ - | zcat \ - | mboxgrep -i "$1" \ - | mboxgrep -v '^Subject:.*SPAM' > ${RESULT_MBOX} - echo "Found "$(grep ^"From " ${RESULT_MBOX} | wc -l)" messages." + | mboxgrep ${HEADER_ONLY} -i "${RE_PREFIX}${PATTERN}" > ${RESULT_MBOX} else - rm -i ${RESULT_MBOX} + cat ${FILE_PATTERN} \ + | pv -s ${SIZE} -p -t -e - \ + | mboxgrep ${HEADER_ONLY} -i "${RE_PREFIX}${PATTERN}" \ + | mboxgrep ${HEADER_ONLY} -v '^Subject:.*SPAM' > ${RESULT_MBOX} fi + +echo "Found "$(grep ^"From " ${RESULT_MBOX} | wc -l)" messages."