#!/bin/bash
pushd $(dirname $0) > /dev/null

ORIGINALS="originals"
POOL="pool"
LANGNAME="dansk"
LAME_OPTS="--resample 12 -t -m m -h -V 9 -S"

GENLANG="$(dirname $0)/../tools/genlang"
CONFIGURE="$(dirname $0)/../tools/configure"
ENGLISH="$(dirname $0)/../apps/lang/english.lang"
LANGFILE="$(dirname $0)/../apps/lang/$LANGNAME.lang"
APPSDIR="$(dirname $0)/../apps"
APPS="$(dirname $0)/apps"

# Archos Player/Studio 2mb
config[1]="player\n\n"
dir[1]="archos-player-sim-w32"

# Archos Recorder
config[2]="recorder\n\n"
dir[2]="archos-recorder-sim-w32"

# Archos FM Recorder
config[3]="fmrecorder\n\n"
dir[3]="archos-fmrecorder-sim-w32"

#Archos Recorder v2
config[4]="recorderv2\n\n"
dir[4]="archos-recorderv2-sim-w32"

#Archos Gmini 120
config[5]=""
dir[5]="archos-gmini120-sim-w32"

#Archos Gmini SP
config[6]=""
dir[6]="archos-gminisp-sim-w32"

#Archos Ondio SP
config[7]="ondiosp\n\n"
dir[7]="archos-ondiosp-sim-w32"

#Archos Ondio FM
config[8]="ondiofm\n\n"
dir[8]="archos-ondiofm-sim-w32"

# iriver H120/H140
config[9]="h120\n"
dir[9]="iriver-h120-sim-w32"

#iriver H320/H340
config[10]="h300\n"
dir[10]="iriver-h300-sim-w32"

#iriver iHP-100/iHP-110/iHP-115
config[11]="h100\n"
dir[11]="iriver-h100-sim-w32"

#iAudio X5
config[12]="x5\n"
dir[12]="iaudio-x5-sim-w32"

#iPod Color/Photo
config[13]="ipodcolor\n"
dir[13]="ipod-photo-sim-w32"

#iPod Nano
config[14]="ipodnano\n"
dir[14]="ipod-nano-sim-w32"

#iPod Video
config[15]="ipodvideo\n\n"
dir[15]="ipod-video-sim-w32"

#iPod 3G
config[16]="ipod3g\n"
dir[16]="ipod-3g-sim-w32"

#iPod 4G (Grayscale)
config[17]="ipod4g\n"
dir[17]="ipod-4Ggray-sim-w32"

#iPod Mini (1G)
config[18]="ipodmini\n"
dir[18]="ipod-mini1G-sim-w32"

#iriver iFP-790
config[19]="ifp7xx\n"
dir[19]="iriver-ifp790-sim-w32"

#Toshiba Gigabeat F
config[20]="gigabeatf\n"
dir[20]="toshiba-gigabeatF-sim-w32"

#iPod Mini (2G)
config[21]="ipodmini2g\n"
dir[21]="ipod-mini2G-sim-w32"

#Iriver H10 20gb
config[22]="h10\n"
dir[22]="iriver-h10_20gb-sim-w32"

#Sandisk Sansa E200
config[23]="e200\n"
dir[23]="sandisk-e200-sim-w32"

#Iriver H10 5gb
config[24]="h10_5gb\n"
dir[24]="iriver-h10_5gb-sim-w32"

#Archos AV 300
config[25]=""
dir[25]="archos-av300-sim-w32"

#iAudio M5
config[26]="m5\n"
dir[26]="iaudio-m5-sim-w32"

#Sandisk Sansa E200R
config[27]="e200r\n"
dir[27]="sandisk-e200r-sim-w32"

#Tatung elio TPJ-1022
config[28]="tpj1022\n"
dir[28]="tatung-tpj1022-sim-w32"

#Ipod 1G/2G
config[29]="ipod1g2g\n"
dir[29]="ipod-1g2g-sim-w32"

voiceconfig="a\nv\n\ndansk\nl\n\n\n"

# Find missing strings
if [ ! -f "missingstrings.txt" ]; then
    (
    i=1
    while [ $i -lt ${#config[@]} ]; do
        if [ "${config[$i]}" == "" ]; then
            let "i = $i + 1"
            continue
        fi

        printf "${config[$i]}$voiceconfig" | ./"$CONFIGURE" > /dev/null
        make features > /dev/null
        TARGET=$(grep "export ARCHOS=" Makefile |sed 's/.*=//'):$(cat "$APPS/features" | tr "\n" ":")
        $GENLANG -e="$ENGLISH" -t="$TARGET" -o "$LANGFILE" | grep "^voice: " |sed 's/^voice: "\(.*\)"$/\1/' |(
            while read STRING; do
                if [ ! -f "$ORIGINALS/$STRING.wav" ] && [ "" != "$STRING" ]; then
                    echo "$STRING"
                fi
            done
            ) |grep -v "jkljjhghfxddxfcghjk" # If I don't pipe the output through something, bash blows up
        #make clean > /dev/null
        rm -f "$APPS/features"
        let "i = $i + 1"
    done
    ) | sort |uniq > missingstrings.txt
    make clean > /dev/null
fi

# Check if there are any missing strings
if [ `cat missingstrings.txt |wc -l` -ne 0 ]; then
    echo "The following (and possibly more) `cat missingstrings.txt |wc -l` are missing:"
    cat missingstrings.txt |sed 's/^/  /'
    rm -rf "$APPS" autoconf.h Makefile voicesettings-*
    exit
else
    rm -f missingstrings.txt
fi

# Create the pool
if [ -d "$POOL" ]; then
    rm -rf $POOL
fi
mkdir $POOL
for original in ${ORIGINALS}/*wav; do
    STRING=$(basename "$original" ".wav")
    POOL_FILE=${POOL}/$(echo "\"${STRING}\"" |md5sum|cut -b-32)-${LANGNAME}.mp3
    lame $LAME_OPTS "$original" "$POOL_FILE"
done

# Build voices
i=1
while [ $i -lt ${#config[@]} ]; do
    if [ "${config[$i]}" == "" ]; then
        let "i = $i + 1"
        continue
    fi

    printf "${config[$i]}$voiceconfig" | "$CONFIGURE" > /dev/null
    TARGET=$(grep "export ARCHOS=" Makefile |sed 's/.*=//')
    printf "${TARGET}.."
    POOL=${POOL} make voice > /dev/null 2>&1
    mv $LANGNAME.voice $LANGNAME-$TARGET.voice
    rm -f "$APPS/features"
    let "i = $i + 1"
    echo "done"
done

# Cleanup
make clean
rm -rf "$APPS" autoconf.h Makefile voicesettings-*
rm -rf $POOL

popd > /dev/null
