#!/bin/sh

# Shell script to test debs in changes files with piuparts.
# To use this script, do the following.
# piuparts-changes-test [changes1 changes2 ...]

CHANGES_LIST="$*"

# Set the directory where log files should be written.
LOGFILE_DIR="$HOME/piuparts-logs"

for CHANGES in $CHANGES_LIST; do
    if ! $(basename $CHANGES | grep -q '.*\.changes$'); then
        echo "$CHANGES is not a changes file."
        continue
    fi
    if [ ! -r $CHANGES ]; then
        echo "Cannot read $CHANGES."
        continue
    fi
    echo "Testing packages in $CHANGES with piuparts."
    PACKAGES=$(cat $CHANGES |
        perl -e \
        'my @str = <STDIN>; my @debs;
        foreach my $tmp (@str)
        { if ($tmp =~ /.*?([^ ]+\.deb)$/)
        { push(@debs, $1) unless grep(/$1/, @debs); } }
        foreach my $tmp (@debs) { print "$tmp "; }'
    )
    PACKAGE_LIST=""
    for PACKAGE in $PACKAGES; do
        PACKAGE_LIST="$PACKAGE_LIST $(dirname $CHANGES)/$PACKAGE"
    done
    # piuparts appends the log to a file rather than overwriting. The line
    # below will erase the log file so we can start a new log.
    printf "" >$LOGFILE_DIR/$(basename $CHANGES | sed 's/\.changes$//').piuparts.log
    piuparts \
        --log-file=$LOGFILE_DIR/$(basename $CHANGES | sed 's/\.changes$//').piuparts.log \
        --basetgz=/media/sdb/pbuilder/unstable-i386-base.tgz \
        $PACKAGE_LIST
done
