#!/bin/sh

# Italian Tremulous Alliance Map Downloader

# Per ogni mappa presente sul server, controlla se nella directory ~/.tremulous/base e' presente il file
# pk3 aggiornato (cio' e' vero se i due file pk3 hanno lo stesso nome). In caso contrario scarica il 
# file, e se necessario lo unzippa nella cartella base di tremulous.

# Uso: ./map-downloader [--auto| tremulous installation path]
# Esempio: ./map-downloader /home/dario/.tremulous/base

echo -e '\E[37;42m'"\033[1m Italian \033[0m"'\E[30;47m'"\033[1m Tremulous \033[0m"'\E[37;41m'"\033[1m Alliance \033[0m Map Downloader -- Versione beta 2"

perc=/dev/null
# Controllo directory destinazione
if [ $# -eq 0 ]; then 
	
	perc=$HOME/.tremulous/base
	echo "AUTO-DETECT MODE abilitato - Cartella di installazione: $perc"
else 
	if [ $1 = "--auto" ]; then 
		perc=$HOME/.tremulous/base
		echo "AUTO-DETECT MODE abilitato - Cartella di installazione: $perc"
	else
		perc=$1
	fi
fi

temp=/tmp/tremfilelist
# Rimuovi il file temporaneo
rm -f $temp

# Creazione cartella temporanea
tempdir=/tmp/temptremfile
rm -rf $tempdir
mkdir $tempdir
cd $tempdir

# Preleva file dal server
echo "Prelevamento file di changelog dal server"
wget -nv --progress=dot http://www.capponcino.it/tremulous/dl/pk3/maps.log
# Spostalo in temp
mv maps.log $temp
# Elabora
echo -e '\E[37;42m'"\033[1m[Elaborazione]\033[0m"
# Check mappa per mappa
for nomemappa in `cat $temp | awk 'BEGIN {RS="";FS="\n";OFS=" "} { print $1 }'`; do
	echo -e '\E[33;0m'"[\033[1m$nomemappa\033[0m]"
	for pkmappa in `cat $temp | awk 'BEGIN {RS="";FS="\n"} $1=="'$nomemappa'" { print $4 }'`; do
		for md5mappa in `cat $temp | awk 'BEGIN {RS="";FS="\n"} $1=="'$nomemappa'" { print $5 }'`; do	
			pathname=$perc/$pkmappa
			if [ -e $pathname ]; then
				# Stesso nome - controlla MD5
				signature=`md5sum -b $pathname | awk '{ print $1 }'`
				echo "Signatura MD5 del file: $signature"
				echo "Signatura remota: $md5mappa"
				if [ $signature != $md5mappa ]; then
					rm -f $pathname
					for filemappa in `cat $temp | awk 'BEGIN {RS="";FS="\n"} $1=="'$nomemappa'" { print $3 }'`; do
						echo "==> $nomemappa con MD5 errato. Scaricamento in corso del file $filemappa"
						`wget -nv -c http://www.capponcino.it/tremulous/dl/pk3/$filemappa`
						# Controllo zippaggio
						echo $filemappa | grep ".zip"
						if [ $? -eq 0 ]; then
							echo "Mappa in formato compresso. Decompressione in corso..."
							`unzip -qq $filemappa`
							rm -f $filemappa
						fi
						mv $pkmappa $perc
						echo "==> $nomemappa installata correttamente"
					done
				else
					echo "==> $nomemappa e' aggiornata"
				fi
			else
				for filemappa in `cat $temp | awk 'BEGIN {RS="";FS="\n"} $1=="'$nomemappa'" { print $3 }'`; do
					echo "==> $nomemappa non presente/non aggiornata. Scaricamento in corso del file $filemappa"
					`wget -nv -c http://www.capponcino.it/tremulous/dl/pk3/$filemappa`
					# Controllo zippaggio
					echo $filemappa | grep ".zip"
					if [ $? -eq 0 ]; then
						echo "Mappa in formato compresso. Decompressione in corso..."
						`unzip -qq $filemappa`
						rm -f $filemappa
					fi
					mv $pkmappa $perc
					echo "==> $nomemappa installata correttamente"
				done
			fi
		done
	done
done

# Rimuovi il file temporaneo
rm -f $temp
rm -rf $tempdir

