#!/bin/sh

set -e

MIRROR=$1
SUITE=$2
TMPDIR=$3
BASEDIR=$4
export LC_ALL=C

if [ "$MIRROR"x = ""x ] || \
	[ "$SUITE"x = ""x ] || \
	[ "$TMPDIR"x = ""x ] || \
	[ "$BASEDIR"x = ""x ] ; then
	echo "$0: Need parameters"
	exit 1
fi

TASKFILE=$BASEDIR/tasks/firmware

rm -rf $TMPDIR/firmware
mkdir -p $TMPDIR/firmware

FILES=`( cpp -undef $TASKFILE | grep -v -e "^#" -e "^$" ; \
	echo DONE ; 
	zcat $MIRROR/dists/$SUITE/non-free/binary-*/Packages.gz ) | \
	awk '
    /DONE/ {
        in_packages = 1
        matched = 0
        next
    }
    /.*/ {
        if (!in_packages) {
            firmware[$1] = num_fw
            num_fw++
            next
        }
    }
    /^Package: / {
        matched = 0
        if (in_packages) {
            for (fw in firmware) {
                if (fw == $2) {
                    matched = 1
                }
            }
            next
        }
    }
    /^Filename: / {
        if (matched) {
            print $2
        }
    }' | sort -u`

for file in $FILES; do
	cp $MIRROR/$file $TMPDIR/firmware/
done	

cd $TMPDIR/firmware
tar czf ../firmware.tar.gz .
zip -9rq ../firmware.zip .
cd ..
ls -l $PWD/firmware.tar.gz $PWD/firmware.zip