#!/bin/bash

DICTORepo="http://smalltalkhub.com/mc/caracciolo/DICTO/main"
DICTObaseUri="http://scg.unibe.ch/download/dicto"
BIN="bin"
DICTOENGINE="$BIN/dicto-engine"
MOOSE="$DICTOENGINE/Moose.image"

if [[ `which curl 2> /dev/null` ]]; then
	DOWNLOAD="curl --silent --location --compressed ";
	DOWNLOAD_TO="$DOWNLOAD --output ";
elif [[ `which wget 2> /dev/null` ]]; then
	DOWNLOAD_TO="wget --quiet --output-document=";
	DOWNLOAD="$DOWNLOAD_TO-";
else
	echo "Please install curl or wget on your machine";
	exit 1
fi

# DETECT SYSTEM PROPERTIES ======================================================
TMP_OS=`uname | tr "[:upper:]" "[:lower:]"`
if [[ "{$TMP_OS}" = *darwin* ]]; then
    OS="mac";
	HEADLESS="--headless"
    PHARO_VM="$DICTOENGINE/pharo-vm/Pharo.app/Contents/MacOS/Pharo"
elif [[ "{$TMP_OS}" = *linux* ]]; then
    OS="linux";
	HEADLESS="--nodisplay"
    PHARO_VM="$DICTOENGINE/pharo-vm/pharo"
elif [[ "{$TMP_OS}" = *win* ]]; then
    OS="win";
elif [[ "{$TMP_OS}" = *mingw* ]]; then
    OS="win";
else
    echo "Unsupported OS";
    exit 1;
fi


# FUNCTIONS ======================================================
function download2engine(){
	$DOWNLOAD_TO$DICTOENGINE/$1 $DICTObaseUri/$1
}
function download2root(){
	$DOWNLOAD_TO./$1 $DICTObaseUri/$1
}
function downloadAndUnpack(){
	download2root "$1.zip"
	unzip -q -d $2 $1.zip
	rm $1.zip
}

# DOWNLOAD DICTO ==================================================
echo -e "\n>> Download Dicto"

mkdir $BIN
mkdir $DICTOENGINE
mkdir $BIN/analysis/

download2engine "runAllAnalyses.sh"
download2engine "buildMooseModel.sh"
download2engine "buildMooseModel2.sh"
download2engine "buildSTMooseModel.sh"
download2engine "buildMooseModel.bat"
download2engine "PeriodicKill.sh"
download2engine "PeriodicOff.sh"
download2engine "PeriodicOn.sh"
download2engine "javaVersion.sh"
download2engine "demo.htm"
download2root "startServer"
download2root "startServer.bat"
downloadAndUnpack "tools" $BIN
downloadAndUnpack "TestProject" "."
downloadAndUnpack "TestProjectSpring" "."
downloadAndUnpack "TestProjectPhp" "."
downloadAndUnpack "pharo-vm-win" "."

$DOWNLOAD http://get.pharo.org/vmLatest | bash 
$DOWNLOAD http://get.moosetechnology.org/Moose50Image | bash

mv pharo-vm/ $DICTOENGINE
mv Moose* $DICTOENGINE
mv pharo $DICTOENGINE
mv pharo-ui $DICTOENGINE


# INSTALL DICTO ==================================================
echo -e "\n>> Install Dicto"

`$PHARO_VM $HEADLESS $MOOSE config $DICTORepo ConfigurationOfDicto --install=development`  &> /dev/null


rm -r $BIN/__MACOSX 2> /dev/null
rm -r __MACOSX 2> /dev/null


chmod +x startServer
find ./ -name "*.sh" -exec chmod +x {} \;
find $BIN/tools/*/bin -exec chmod +x {} \;
chmod +x $PHARO_VM

touch $DICTOENGINE/shell-error.txt
touch $DICTOENGINE/shell-output.txt

echo -e "\n>> DICTO is now installed!\n"

