#!/bin/bash

exithook()
{
    rm -f "$TMP" "$TEMP" "$BSTMP"
}

SHAREDIR=$(cd $(dirname $0) && pwd)
[ -r "${SHAREDIR}/common.sh" ] || SHAREDIR=/usr/share/apt-zip
. "${SHAREDIR}/common.sh"

# options to take care
[ -z "$APTGETACTION" -a -z "$PACKAGES" ] &&
    eval export APTGETACTION=\${APTGETACTION-${DEFAULT_APTGETACTION}}
[ -n "$APTGETACTION" ] && check_aptgetaction

# Find block size on zip
BSTMP=$(tempfile -d "$MEDIUM" -p aptzip)
if [ $? != 0 ]
then
    error "Could not create temporary file"
fi

echo "bs test" > "$BSTMP"
BLOCKSIZE=$(du -b "$BSTMP" | cut -f1)
rm "$BSTMP"
#echo >&2 "Block size = $BLOCKSIZE"

TMP=$(tempfile -p aptzip)
TEMP=$(tempfile -p aptzip)

[ -n "$PACKAGES" ] && apt-get ${APTGETEXTRAOPTS} -qq --print-uris install $PACKAGES > "$TMP"
[ -n "$APTGETACTION" ] && apt-get ${APTGETEXTRAOPTS} -qq --print-uris ${APTGETACTION} >> "$TMP"
grep $GREP < "$TMP" | tr -d "'" | sort -u > "$TEMP"
if [ $? != 0 ]
then
    error "apt-get failed"
fi

# We will tell the user how much it is to download 
# (even on a fast connection there could be restrictions)
DWLSIZE=$(
    cut -d' ' -f3 < "$TMP" |
    {
	_SZ=0
	while read val
	do
#	    nblocks=$[ ( $val / $BLOCKSIZE ) + 1 ]
	    _SZ=$[ $_SZ + $val ]
#	    _SZ=$[ $_SZ + $nblocks ]
	done
	echo $_SZ
    }
)
export DWLSIZE



# Check requested size against free space
#SIZE0=$(echo 'n' | apt-get ${APTGETEXTRAOPTS} dselect-upgrade | grep '^Need to get' | cut -d' ' -f4)

#error "Size0 = $SIZE0 - Size = $SIZE blocks = $[ $SIZE * $BLOCKSIZE ]"

# Write the script
SCRIPT="${MEDIUM}"/fetch-script-$METHOD-$(uname -n)

# --print-uris shows: URI filename size-in-bytes md5
$FILTER < "$TEMP" >"$SCRIPT"
if [ $? != 0 ]
then
    echo >&2 "WARNING: an error occured in the $SCRIPT script"
    exit 1
fi
cat > "${MEDIUM}/${APTZIPINSFILE}" <<EOF
# This file was auto-generated by apt-zip-list ${APTZIPVERSION}
# to save the state of apt-zip-list
DEF_APTGETEXTRAOPTS="${APTGETEXTRAOPTS}"
DEF_APTGETACTION="${APTGETACTION}"
DEF_PACKAGES="${PACKAGES}"
EOF

echo "The download size is: $DWLSIZE"

