#! /bin/sh

# This script is used to generate the freeimage orig tarball used for this
# package.

# Some variables to make maintaining this script easier
FREEIMAGE_VERSION="3.15.4"
FREEIMAGE_URL_DIR="http://downloads.sourceforge.net/freeimage"
FREEIMAGE_TARBALL="FreeImage3154.zip"
FREEIMAGE_TARBALL_CHECKSUM="9f9a3b2c3c1b4fd24fe479e8aaee86b1"
FREEIMAGE_DOC="FreeImage3154.pdf"
FREEIMAGE_DOC_CHECKSUM="acfbb9bcf5f5ee5ab77824c666a39a15"

USAGE="\n\
This script is used to generate the orig tarball used in building\n\
Debian packages for freeimage-$FREEIMAGE_VERSION.\n\
Usage: freeimage-get-orig-source [OPTION]\n\
\n\
 -h, --help                 Display this help message.\n\
 --keep-upstream-files      Keep downloaded files.\n\
 --keep-orig-dir            Keep the generated orig directory.\n"

while [ "$#" -gt "0" ]
do
    case "$1" in
        --keep-upstream-files)
            KEEP_UPSTREAM_FILES=1
            shift
            ;;
        --keep-orig-dir)
            KEEP_ORIG_DIR=1
            shift
            ;;
        -h|--help|*)
            echo >&2 "${USAGE}"
            exit 1
            ;;
    esac
done

set -e

# Function to download files. Takes two parameters, the directory name of the
# url to use, and the filename of the file.
download() {
    local url="$1/$2"
    if [ ! -f $2 ] ; then
        # Download the tarball
        wget $url
    fi
}

# Function to verify the checksum. Takes two parameters, the file to compute the
# checksum for and the checksum it should be.
verify_checksum() {
    local checksum=`md5sum $1 | cut -d ' ' -f 1`

    if [ $2 != $checksum ] ; then
        echo "Checksum verification failed. Checksum was $checksum
    Expected checksum $2"
        exit 1
    else
        echo "Checksum verified. Checksum is $2"
    fi
}

# The rest is our main functions.
#Download the files
download $FREEIMAGE_URL_DIR $FREEIMAGE_TARBALL
download $FREEIMAGE_URL_DIR $FREEIMAGE_DOC

# Verify the checksums
verify_checksum $FREEIMAGE_TARBALL $FREEIMAGE_TARBALL_CHECKSUM
verify_checksum $FREEIMAGE_DOC $FREEIMAGE_DOC_CHECKSUM

# Unpack the upstream source
if [ ! -d FreeImage -a ! -d freeimage-$FREEIMAGE_VERSION ]; then
    echo "Unpacking upstream source."
    unzip -qq $FREEIMAGE_TARBALL
    mv FreeImage freeimage-$FREEIMAGE_VERSION
else
    echo -n "Please remove or move FreeImage and freeimage-$FREEIMAGE_VERSION "
    echo "directory."
    exit 1
fi

# Move the extra documentation into the extracted directory and pack into a
# gzipped tarball
if [ ! -f freeimage-$FREEIMAGE_VERSION ]; then
    echo "Creating freeimage_$FREEIMAGE_VERSION orig tarball."
    [ -d freeimage-$FREEIMAGE_VERSION/extra.Debian ] || \
        mkdir -p freeimage-$FREEIMAGE_VERSION/extra.Debian
    cp -f $FREEIMAGE_DOC \
        freeimage-$FREEIMAGE_VERSION/extra.Debian/$FREEIMAGE_DOC
    tar -czf freeimage_$FREEIMAGE_VERSION.orig.tar.gz \
        freeimage-$FREEIMAGE_VERSION
else
    echo "Please remove or move freeimage_$FREEIMAGE_VERSION.orig.tar.gz."
    exit 1
fi

# Perform cleanup
if [ -z "$KEEP_ORIG_DIR" ]; then
    echo "Removing extracted directory."
    rm -rf freeimage-$FREEIMAGE_VERSION
fi
if [ -z "$KEEP_UPSTREAM_FILES" ]; then
    echo "Removing upstream files."
    rm $FREEIMAGE_TARBALL
    rm $FREEIMAGE_DOC
fi
