#!/bin/ash -ef
# -*- mode: Shell-script; tab-width: 8; fill-column: 70; -*- 
# $Id: sendmails,v 0.0.1 2006/03/13 18:11:28 legion Exp $ 

. "${0%/*}/../config"
. "$dist/incominger/functions"

TEST=
target=

mailto_dir="$dist/incominger/mailto"
module="reject"

Usage() {
    [ "$1" = 0 ] || exec >&2
    cat <<EOF
Usage: $PROG [options] <path-to-logdir>

<path-to-logdir> must be valid writable directory.

Valid options are:
  -m, --module=NAME         mail module;
  -t, --target=ARCH         init architecture;
  -T, --test                test only;
  -h, --help                show this text.

EOF
    [ "$#" -gt 0 ] && exit "$1" || exit
}

TEMP=`getopt -n $PROG -o h,T,m:,t: -l help,test,module:,target: -- "$@"` || Usage
eval set -- "$TEMP"

while :; do
    case "$1" in
	-m|--module) shift; module="$1"
	    ;;
	-T|--test) TEST="echo"
	    ;;
	-h|--help) Usage 0
	    ;;
	-t| --target) shift; target="$1"
	    ;;
	--) shift; break
	    ;;
	*) fatal "unrecognized option: $1"
	    ;;
    esac
    shift
done

[ "$#" -eq 1 ] || Usage 1
indir="$1" && shift

[ -f "$mailto_dir/$module.ash" ] || fatal "not regular file: $mailto_dir/$module.ash"

# Requires: TEST, mailto_dir, module
send() {
    local info= f= fn= owner= rname= hello= line=
    info="$1" && shift

    [ ! -s "$info" ] && error "\`$info' == 0" && return 0 ||:

    f="${info%.info}"
    fn="${f##*/}"
    line="$(head -1 "$info")"
    rname="${line%%	*}"
    owner="${line#*	}"

    [ -z "$rname" ] &&
	hello="Dear $owner !" ||
	hello="Dear $rname !"

    [ -z "$TEST" ] || { printf 'Send mail: %s: %s' "$owner" "$fn"; return 0; }

    [ ! -f "$f.values" ] || . "$f.values"
    . "$mailto_dir/$module.ash"

    rm -f -- "$info"
    [ ! -f "$f.values" ] || rm -f -- "$f.values"
}

if [ -d "$indir" ]; then
    find "$indir" -name '*\.info' |
    while read info; do
	send "$info"
    done
elif [ -f "$indir" -a "$indir" != "${indir%.info}" ]; then
    send "$indir"
fi
