#!/bin/bash

usage()
{
cat << EOF
OPTIONS:
   -h      Show this message
   -m      Build a local model database. 
           Option "local" to use only local models.
   -c      Create coarse versions of all models in the local database 
   -t      Generate a thumbnail for each model
EOF
exit
}


MODELS=
LOCAL=
COARSE=
THUMBNAIL=
GetOpts() 
{
  branch=""
  argv=()
  while [ $# -gt 0 ]
  do
    opt=$1
    shift
    case ${opt} in
        -m)
          MODELS=true
          echo "Build a local model database."
          if [ $# -eq 0 -o "${1:0:1}" = "-" ]
          then
            echo "Download from gazebo_models repository."
          fi
          if [[ "$1" == "local" ]]
          then
            LOCAL=true
            echo "Only local models."
            shift
          fi
          ;;
        -c)
          COARSE=true
          echo "Simplify models on local database."
          ;;
        -t)
          THUMBNAIL=true
          echo "Thumbnails will be generated"
          ;;
        *)
          usage
          argv+=(${opt})
          ;;
    esac
  done 
}

GetOpts $*

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd $DIR

# Install node modules
npm install

# install bower components
bower install

#
# build the c++ server component
#
rm -rf build
mkdir build
cd build


# Run cmake and check for the exit code
cmake ..

RETVAL=$?
if [ $RETVAL -ne 0 ]; then
  echo There are cmake errors, exiting.
  exit 1
fi

# continue building if cmake is happy
make -j 8

cd ../gzbridge
$DIR/node_modules/.bin/node-gyp configure
$DIR/node_modules/.bin/node-gyp build -r

RETVAL=$?
if [ $RETVAL -ne 0 ]; then
  echo There are node-gyp build errors, exiting.
  exit 1
fi

cd $DIR

# build a local model database
if [[ $MODELS ]]
then
  # Temporal directory for the repository
    TMP_DIR=`mktemp -d`
    cd $TMP_DIR

  # If no arg given then download from gazebo_models repo
  if [[ -z $LOCAL ]]
  then
    echo -n "Downloading gazebo_models..."
    hg clone https://bitbucket.org/osrf/gazebo_models

    echo "Download complete"
    cd gazebo_models
    mkdir build
    cd build
    echo -n "Installing gazebo_models..."
    cmake .. -DCMAKE_INSTALL_PREFIX=$DIR/http/client
    make install > /dev/null 2>&1
    echo "Install complete"

    # Remove temp dir
    rm -rf $TMP_DIR
    rm -rf $DIR/http/client/assets
    mv $DIR/http/client/models $DIR/http/client/assets
  fi

  cd $DIR

  echo "Gather all models on the local machine"

  ./get_local_models.py $DIR/http/client/assets
  ./webify_models_v2.py $DIR/http/client/assets

else
  echo "Not cloning the model repo"
fi

if [[ $MODELS ]] || [[ $THUMBNAIL ]]
then
  echo "Generating a thumbnail for each model. Make sure gazebo is not running"
  ./tools/gzthumbnails.sh
fi

# build a local model database
if [[ $COARSE ]]
then
  ./coarse_meshes.sh 50 http/client/assets/
fi

echo "Done"

