#!/bin/bash -e

. /usr/share/debconf/confmodule
db_version 2.0
db_capb backup

errmsg()
{
    echo >&2 ''
    echo >&2 "$@"
    echo >&2 "try 'dpkg-reconfigure debconf' to select a frontend other than noninteractive"
    echo >&2 ''
    exit 1
}

download()
{
    uri=$1
    src=$2
    zip=$3
    md5=$4
    cmd=$5

    tmpdir=$(mktemp -d)

    echo "Downloading $zip..." 1>&2

    wget -O "$tmpdir/$zip" "$uri" 1>&2
    if [ -e "$tmpdir/$zip" ]; then
        md5ref=$(md5sum "$tmpdir/$zip" | cut -f1 -d' ')
        if [ "$md5ref" != "$md5" ]; then
            errmsg "md5sum of $tmpdir/$zip is different. expected $md5, but actual $md5ref"
        fi
    else
        errmsg "could not download $tmpdir/$zip"
    fi
    (cd $tmpdir; $cmd $zip 1>&2)
    if [ ! -e "$tmpdir/$src" ]; then
        errmsg "Extracted archive $tmpdir/$zip, but $tmpdir/$src not found"
    fi
    echo "Done" 1>&2
    echo $tmpdir/$src
}

GRAMMARKIT_VERSION=4.3.1
GRAMMARKIT_MD5SUM=25fbae0bbff21fc549851b3bad7f2973
DICTATIONKIT_VERSION=4.4
DICTATIONKIT_MD5SUM=04c98c1d0d91c91faa62684f1cce1841
INSTALL_DIR=/opt/ros/indigo/share/julius

# download & install grammar kit
SOURCE_DIR=$(download \
    "https://github.com/julius-speech/grammar-kit/archive/v${GRAMMARKIT_VERSION}.tar.gz" \
    grammar-kit-${GRAMMARKIT_VERSION} \
    grammar-kit-v${GRAMMARKIT_VERSION}.tar.gz \
    "$GRAMMARKIT_MD5SUM" \
    "tar xvf" \
)
rsync -a ${SOURCE_DIR}/model ${INSTALL_DIR}
rsync -a ${SOURCE_DIR}/SampleGrammars ${INSTALL_DIR}
rsync -a ${SOURCE_DIR}/SampleGrammars_en ${INSTALL_DIR}
rsync -a ${SOURCE_DIR}/*conf ${INSTALL_DIR}/conf

# download & install dictation kit
SOURCE_DIR=$(download \
    "https://osdn.net/frs/redir.php?m=ymu&f=%2Fjulius%2F66544%2Fdictation-kit-v${DICTATIONKIT_VERSION}.zip" \
    dictation-kit-v${DICTATIONKIT_VERSION} \
    dictation-kit-v${DICTATIONKIT_VERSION}.zip \
    "$DICTATIONKIT_MD5SUM" \
    "unzip" \
)
rsync -a ${SOURCE_DIR}/model/ ${INSTALL_DIR}/model
rsync -a ${SOURCE_DIR}/*conf ${INSTALL_DIR}/conf
