#!/bin/bash


usage() { echo "Usage: $0 [-k keeps data ]" 1>&2; exit 1; }

while getopts "k" o; do
    case "${o}" in
        k)
            k="true"
            ;;
        h)
            usage
            ;;
        *)
            usage
            ;;
    esac
done

if [ -n "$k" ]
then
    echo "keeping data"
fi

shift $((OPTIND-1))
# Generate a flowmap for matroos
# expects wget, ffmpeg and the flowmap command to be available.

# Fix a bug in anaconda gdal
source activate py35
export GDAL_DATA=$(gdal-config --datadir)

# Mount EFS if set
if [ -n $EFS ]
then
    mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=15,retrans=2 ${EFS}:/ /tmp/efs
    cd /tmp/efs
fi

# define models
declare -A urls
urls[dcsm]='http://noos.matroos.rws.nl/direct/get_netcdf.php?database=maps2d&source=dcsm_v6_kf_hirlam&zip=1'
urls[zuno]='http://noos.matroos.rws.nl/direct/get_netcdf.php?database=maps2d&source=dcsmv6_zunov4_zuno_kf_hirlam&zip=1'

for model in ${!urls[@]}; do
    echo downloading $model
    filename=$(date +%Y%m%d%H)_${model}
    # get latest netcdf file
    wget -nv -O $filename.zip -c ${urls[$model]}
    # search for the extracted filename
    extracted=$(zipinfo -1  $filename.zip)
    # extract zip file
    unzip -o $filename.zip
    # cleanup the zip file
    if [ -z "$k" ]
    then
        rm $filename.zip
    fi
    extracted_base=$(basename -s .nc $extracted)

    # generate the flowmap
    flowmap generate $extracted --src_epsg 4326 --dst_epsg 25831 --vmin -1.5 --vmax 1.5 --framescale 20
    # we're done with the netcdf file, cleanup
    if [ -z "$k" ]
    then
        rm $extracted
    fi
    # convert to movie
    ffmpeg -i ${extracted_base}_%06d.png -b:v 1M -an -pix_fmt yuv420p -r 10 ${extracted_base}.mp4
    # cleanup images
    if [ -z "$k" ]
    then
        rm ${extracted_base}_*.png
    fi
    aws s3 cp ${extracted_base}.mp4 s3://model-inventory/movies/${extracted_base}.mp4
    # cleanup movie
    if [ -z "$k" ]
    then
       rm ${extracted_base}.mp4
    fi
done
