#!/bin/bash
#
# debchanges-receiver
#
# Written by Tatsuki SUGIURA <sugi@nemui.org>
# Modified by Taku YASUI <tach@debian.org> on Sep 2010

umask 0002

CONFFILE=`dirname $0`/../etc/debian-arege.conf
test -f $CONFFILE && . $CONFFILE

sendmail=/usr/sbin/sendmail
bindir=`dirname $0`
etcdir=`dirname $0`/../etc
mailto="$SENDER, debian-arege-admin@arege.jp"
archive=$BASEDIR
incoming="$archive/incoming"
donedir="$incoming/done"
faildir="$incoming/fail"
date="`date +%y-%m-%d.%T`"
scanlog="$archive/tools/log/scanlog.$date"
installlog="$archive/tools/log/installlog.$date"
tmpdir="$(mktemp -d -p "$archive/incoming" installing.XXXXXX)" || exit 100

cleanup() {
 test ! -z "`ls $tmpdir/`" && mv -f $tmpdir/* $faildir
 test -d $tmpdir && rmdir $tmpdir
}

trap cleanup 0 SIGHUP SIGINT SIGABRT SIGQUIT SIGTERM 

stdin="`cat`"
package=`echo "$stdin" | egrep '^Source: ' | head -1 | cut -d' ' -f2`
dist=`echo "$stdin" | egrep '^Distribution: ' | head -1 | cut -d' ' -f2`
version=`echo "$stdin" | egrep '^Version: ' | head -1 | cut -d' ' -f2`
if (echo "$version" | grep -q ":" ); then
  version=`echo "$version" | cut -d: -f2`
fi
changes=`echo $incoming/${package}_${version}_*.changes`
if [ ! -e "$changes" ]; then
  (echo "To: $mailto
Subject: ERROR: installing local debian archive

can't find changes file: $changes") | $sendmail -t
  exit 100;
fi

mv $changes $tmpdir
changes="${tmpdir}/${changes##*/}"

placemsg=`$bindir/place-deb -d - $archive/incoming < $changes`
placeret=$?
echo "$placemsg" >> $installlog
if [ "$placeret" = "0" ]; then
  mv $changes $donedir
else
  mv $changes $faildir
fi

(echo "To: $mailto"
 cat $etcdir/place-deb.msg
 test "$placeret" != "0" && echo "=== Install ERROR ==="
 echo "$placemsg") | $sendmail -t

$bindir/scan dists/$dist/$package > $scanlog 2>&1 || \
(echo "To: $mailto
Subject: ERROR: scanning local debian archive

"; cat $scanlog ) | $sendmail -t

chmod 644 $scanlog
