#! /bin/sh
###############################################################################
#
# File:         indexer
# RCS:          $Header: /users/darrylo/.repository/mh-e/indexer,v 1.1 1998/07/23 22:31:58 darrylo Exp $
# Description:  Script to index MH mail folders using glimpse.
#		Designed for use with exmh or mh-e w/glimpse extensions.
# Author:       Darryl Okahata
# Created:      Tue May 12 10:02:19 1998
# Modified:     Mon Jul 13 18:53:25 1998 (Darryl Okahata) darrylo@sr.hp.com
# Language:     Shell-script
# Package:      N/A
# Status:       Experimental (Do Not Distribute)
#
# (C) Copyright 1998, Hewlett-Packard, all rights reserved.
#
###############################################################################

set -e

#MAIL_DIR=~/Mail
MAIL_DIR=`mhparam path`

if expr match "X$MAIL_DIR" "X/" > /dev/null
then
    true
else
    MAIL_DIR="$HOME/$MAIL_DIR"
fi

if [ ! -d "$MAIL_DIR" ]
then
    echo "$0: \"$MAIL_DIR\" is not a directory or does not exist!" >&2
    exit 1
fi


FOLDER_FILE="$MAIL_DIR/.folders"

INDEX_DIR_BASENAME=".glimpse"
INDEX_DIR="$MAIL_DIR/$INDEX_DIR_BASENAME"

GLIMPSEOPTIONS='-M 10'

###############################################################################

while [ "X$1" != "X" ]
do
    case "$1" in
    -E)
	OUTPUT_EMACS_PROGRESS=1
	;;
    -F)
	FORCE_REBUILD=1
	# Ignore
	;;
    *)
	# Ignore
	;;
    esac
    shift
done


###############################################################################

echo "MH Mail indexing started at `date`"
echo

if [ "X$FORCE_REBUILD" != "X" ]
then
    rm -f $FOLDER_FILE			# Force rebuilding of folder list
fi

if [ ! -f $FOLDER_FILE ]
then
    rm -f $FOLDER_FILE			# just to be safe
    (
	cd $MAIL_DIR
	find . -type d -print | \
	    sed -e "/\/$INDEX_DIR_BASENAME/d" -e 's|^\./||' -e '/^\.$/d' | \
	    sort > $FOLDER_FILE
    )
fi


for f in `cat $FOLDER_FILE`
do
    if [ "X$OUTPUT_EMACS_PROGRESS" != "X" ]
    then
	echo "*Indexing $f"
    fi
    DIR="$INDEX_DIR/$f"
    if [ ! -d $DIR ]
    then
	mkdir -p $DIR
    fi
    rm -f $DIR/.glimpse_exclude
    if [ ! -f $DIR/.glimpse_exclude ]
    then
	{
	cat <<'EOF'
*/.*
*/#*
*/*~
EOF

	for d in `( cd $MAIL_DIR/$f ; find . -type d | sed -e '/^\.$/d' -e 's/^\.\///')`
	do
	    echo "$d/*"
	done
	} > $DIR/.glimpse_exclude 
    fi
    glimpseindex -H $DIR $GLIMPSEOPTIONS $MAIL_DIR/$f | \
	egrep '(Indexing|Size)'
done 2>&1 | sed -e '/^Using [0-9]/d' -e "s/^Size/	Size/"

echo
echo "MH Mail indexing finished at `date`"
