#!/bin/bash

#exit

. /usr/local/bin/profile

#number of maps to keep in archive
LOG=updateMap-`date '+%Y.%m.%d'`.log
MAPS_MAX=30
WWW_DIR=/var/www/html/xhnili07

LOCK=/tmp/xhnili07.lock

test -f $LOCK && { echo "Lock file $LOCK exists. Exiting..." >>$LOG; exit; }
touch $LOCK

cd $HOME || exit

#download whole new CZ map in case of troubles and merge with contour data
# cd $HOME/map
# wget http://download.geofabrik.de/europe/czech-republic-latest.osm.bz2 -O - | bunzip2 >$HOME/map/CR.osm

update_CR_osm(){
  #stahnout aktualni osc file
  osmosis --read-replication-interval workingDirectory=map/update --simplify-change --write-xml-change map/update/changes.osc.gz >>$LOG 2>&1
  echo "######### Done downloading osc file, staring maps handling" >>$LOG

  #empty OSC have 108 bytes - skip map update
  test `stat -c %s map/update/changes.osc.gz` -gt 108 && {
    #prejmenovat aktualni mapu na old
    mv map/CR.osm map/CR_old.osm
    echo "######### Done maps handling, starting updating map file" >>$LOG
    #aktualizovat stavajici file
    osmosis --read-xml-change file="map/update/changes.osc.gz" --sort-change  --read-xml file="map/CR_old.osm" --apply-change --write-xml map/CR.osm >>$LOG 2>&1
    #smazat old file - uz neni potreba
    rm map/CR_old.osm
  }
}

#try twice to catch up some problems
update_CR_osm
update_CR_osm

echo "######### Done updating, starting tag copying" >>$LOG
#zkopirovat tagy
python3 bin/tagsCopy.py map/CR.osm >>$LOG 2>&1
echo "######### Done copying tags, starting map generating" >>$LOG
#pridat vrstevnice a vykreslit mapu
osmosis --rx file=map/mergedMap.osm --sort --rb file=map/c10_CR.pbf --merge --mw file="map/CR_latest.map" bbox=48.520,12.047,51.086,18.924 type=hd tag-conf-file=plugins/tag-mapping.xml threads=2 >>$LOG 2>&1
echo "######### Done map generating, starting preparing map files for web" >>$LOG
#smazat osm soubor
rm map/mergedMap.osm

test -f map/CR_latest.map || {
  echo 'Some problem with map generation, exiting'
  exit
}

#presunout CR_latest.map na web
mv -f map/CR_latest.map $WWW_DIR

#zkopirovat CR_latest.map do archivu
cp $WWW_DIR/CR_latest.map $WWW_DIR/archiv

# komprese souboru v archivu
gzip --best $WWW_DIR/archiv/CR_latest.map

DATUM=`grep timestamp map/update/state.txt | sed 's/.*=//; s/T.*//'`
#prejmenovani podle datumu
mv $WWW_DIR/archiv/CR_latest.map.gz $WWW_DIR/archiv/CR_$DATUM.map.gz
echo "######### Done map copying to web folder and archive folder, starting generating index.html file" >>$LOG
#vypis data do html
echo $DATUM >$WWW_DIR/date.txt

#generovani index.html
cat $WWW_DIR/header.html >$WWW_DIR/index.html
cat $WWW_DIR/date.txt >>$WWW_DIR/index.html
cat $WWW_DIR/footer.html >>$WWW_DIR/index.html
echo "######### Done generating index.html file ($DATUM), starting deleting 11th map" >>$LOG

#smazani stareho souboru mapy - try at least 2x
if ((`ls -1 $WWW_DIR/archiv/ | wc -l` > $MAPS_MAX)) ; then
VAR=`ls -1 $WWW_DIR/archiv | head -n 1`
echo "Deleting file $WWW_DIR/archiv/$VAR" >>$LOG
rm $WWW_DIR/archiv/$VAR
fi

if ((`ls -1 $WWW_DIR/archiv/ | wc -l` > $MAPS_MAX)) ; then
VAR=`ls -1 $WWW_DIR/archiv | head -n 1`
echo "Deleting file $WWW_DIR/archiv/$VAR" >>$LOG
rm $WWW_DIR/archiv/$VAR
fi

echo "######### Everything finished `date`" >>$LOG

rm $LOCK
