#! /bin/sh

avnavdir=`readlink -f $0`
avnavdir=`dirname $avnavdir`

dopt=""
basedir=""
chartdir=""
xmlfile=""
silent=0
gui=0
template="$avnavdir/avnav_template.xml"

usage(){
  echo "usage: $0 [-d] [-q] [-b basedir] [-c chartdir] [-x cfgfile] [-t template] [-g]"
}

err(){
  echo "ERROR: $*"
  exit 1
}


while getopts dc:b:x:qgt: opt; do
case $opt in
  d)
    dopt="-d"
    ;;
  c)
    chartdir=$OPTARG
    ;;
  b)
    basedir=$OPTARG
    ;;
  x)
    xmlfile=$OPTARG
    [ ! -f "$xmlfile" ] && err "config file $xmlfile not found"
    ;;
  q)
    silent=1
    ;;
  g)
    gui=1
    ;;
  t)
    template="$OPTARG"
    [ ! -f "$template" ] && err "template $template not found"
    ;;
  \?)
    echo "invalid option $opt"
    usage
    exit 1
esac
done
shift $((OPTIND-1))

[ "$gui" != 0 -a "$chartdir" != "" ] && err "you cannot set the chartdir when running the gui"
[ "$gui" != 0 -a "$xmlfile" != "" ] && err "you cannot set the config file when running the gui"

startprog="$avnavdir/server/avnav_server.py"
[ ! -x $startprog ] && err "$startprog not found"

guiprog="$avnavdir/gui/avnav_gui.py"
[ "$gui" != 0 -a ! -x $guiprog ] && err "the gui $guiprog is not installed"

if [ "$basedir" = "" ] ; then
  if [ "$HOME" = "" ] ; then
    err "no parameter -b is set and environment HOME is unset"
  fi
  if [ "$chartdir" = "" ] ; then
    #be compatible to the converter
    chartdir="$HOME/AvNavCharts/out"
  fi
  basedir="$HOME/avnav"
  if [ -d $basedir/data ] ; then
    basedir=$basedir/data
    echo "using old style basedir $basedir"
  fi
fi
if [ ! -d $basedir ] ; then
    echo "creating $basedir"
    mkdir -p $basedir || err "unable to create $basedir"
fi
basedir=`readlink -f $basedir`
for d in log charts routes tracks ; do
  if [ ! -d "$basedir/$d" ] ; then
    mkdir -p "$basedir/$d" || err "unable to create $basedir/$p"
  fi
done
if [ "$chartdir" = "" ] ; then
  chartdir="$basedir/charts"
fi
if [ ! -d "$chartdir" ] ; then
  mkdir -p "$chartdir" || err "unable to create chart dir $chartdir"
fi

if [ "$xmlfile" = "" ] ; then
  xmlfile=$basedir/avnav_server.xml
  if [ ! -f "$xmlfile" ] ; then
    echo "creating initial $xmlfile"
    sed -e "s?#DATADIR#?$basedir?" -e "s?#AVNAVDIR#?$avnavdir?" "$template" > $xmlfile || err "unable to create $xmlfile"
  fi
fi

if [ "$gui" != 0 ] ; then
  python -c 'import wx' > /dev/null 2>&1
  [ $? != 0 ] && err "missing package python-wxgtkn.n, please install a valid version of this package (e.g. python-wxgtk3.0)"
  exec $guiprog -b "$basedir" -u "viewer=$avnavdir/viewer,libraries=$avnavdir/viewer/libraries,sounds=$avnavdir/sounds"
else
  echo "chartdir=$chartdir, basedir=$basedir, config=$xmlfile, starting server..."
  if [ "$silent" = 0 ] ; then
    exec $startprog -c "$chartdir" -w "$basedir" -u "viewer=$avnavdir/viewer,libraries=$avnavdir/viewer/libraries,sounds=$avnavdir/sounds" $dopt "$xmlfile"
  else
    exec $startprog -c "$chartdir" -w "$basedir" -u "viewer=$avnavdir/viewer,libraries=$avnavdir/viewer/libraries,sounds=$avnavdir/sounds" $dopt "$xmlfile"  > /dev/null 2>&1
  fi
fi


