#!/bin/bash
# setup_env
# Script for pulling down the MOTODEV plugins source, all dependencies, and building
# If building on Windows with Cygwin or MingGW/Git Bash, use forward slash format



# Required parameters
# ===== BEGIN =====

# Insert your build base here. This is where files will be downloaded and build
export BUILD_BASE_PATH=/home/username/work/build_test

# This is the path to the downloaded Eclipse installation
export ECLIPSE_BASE_PATH=$BUILD_BASE_PATH/env/eclipse

# Target OS. (WINDOWS, LINUX)
#export BUILD_TARGET="WINDOWS"
export BUILD_TARGET="LINUX"

# =====  END  =====
# Required parameters



# It's OK if this fails due to existing
mkdir $BUILD_BASE_PATH
cd $BUILD_BASE_PATH
mkdir ./env
mkdir ./env/code
#mkdir ./env/code/android
#mkdir ./env/code/android/makefile
#mkdir ./env/code/android/src
#mkdir ./env/eclipse
mkdir ./input
mkdir ./input/repository
mkdir ./input/repository/base


# These will come from eclipse git repos
mkdir ./input/repository/base/REPO_ECLIPSE_PLATFORM
mkdir ./input/repository/base/REPO_BIRT
mkdir ./input/repository/base/REPO_DATATOOLS
mkdir ./input/repository/base/REPO_EMF_XSD_SDO
mkdir ./input/repository/base/REPO_GEF
mkdir ./input/repository/base/REPO_JDT
mkdir ./input/repository/base/REPO_PDE
mkdir ./input/repository/base/REPO_WTP
mkdir ./input/repository/base/REPO_EGIT
mkdir ./input/repository/base/REPO_MYLYN

# This will come from eclipse svn
mkdir ./input/repository/base/REPO_MAT

# This will come from an archive or Eclipse git
mkdir ./input/repository/base/REPO_SEQUOYAH

# This will come from Google
mkdir ./input/repository/base/REPO_ADT

# These are set to get the revision used by MOTODEV. In some cases, it 
# may be necessary to get the HEAD by removing the -b parameter
cd ./input/repository/base

if [ -f "REPO_ECLIPSE_PLATFORM.zip" ];
then
echo "REPO_ECLIPSE_PLATFORM.zip exists. Skipping.";
else
curl http://download.eclipse.org/eclipse/downloads/drops4/R-4.2-201206081400/org.eclipse.platform.source-4.2.zip > REPO_ECLIPSE_PLATFORM.zip;
fi

if [ -f "REPO_BIRT.zip" ];
then
echo "REPO_BIRT.zip exists. Skipping.";
else
curl http://download.eclipse.org/birt/downloads/drops/R-R1-4_2_0-201206131143/birt-updatesite-4_2_0.zip > REPO_BIRT.zip;
fi

if [ -f "REPO_DATATOOLS.zip" ];
then
echo "REPO_DATATOOLS.zip exists. Skipping.";
else
curl http://download.eclipse.org/datatools/downloads/1.10/dtp-sdk_1.10.zip > REPO_DATATOOLS.zip;
fi

if [ -f "REPO_EMF_XSD_SDO.zip" ];
then
echo "REPO_EMF_XSD_SDO.zip exists. Skipping.";
else
curl http://download.eclipse.org/modeling/emf/emf/downloads/drops/2.8.0/R201206080554/emf-xsd-Update-2.8.0.zip > REPO_EMF_XSD_SDO.zip;
fi

if [ -f "REPO_GEF.zip" ];
then
echo "REPO_GEF.zip exists. Skipping.";
else
curl http://download.eclipse.org/tools/gef/downloads/drops/3.8.0/R201206112118/GEF-ALL-3.8.0.zip > REPO_GEF.zip;
fi

if [ -f "REPO_JDT.zip" ];
then
echo "REPO_JDT.zip exists. Skipping.";
else
curl http://download.eclipse.org/eclipse/downloads/drops4/R-4.2-201206081400/org.eclipse.jdt.source-4.2.zip > REPO_JDT.zip;
fi

if [ -f "REPO_PDE.zip" ];
then
echo "REPO_PDE.zip exists. Skipping.";
else
curl http://download.eclipse.org/eclipse/downloads/drops4/R-4.2-201206081400/org.eclipse.pde.source-4.2.zip > REPO_PDE.zip;
fi

if [ -f "REPO_WTP.zip" ];
then
echo "REPO_WTP.zip exists. Skipping.";
else
curl http://download.eclipse.org/webtools/downloads/drops/R3.4.0/R-3.4.0-20120612174739/wtp4x-repo-R-3.4.0-20120612174739.zip > REPO_WTP.zip;
fi

if [ -f "REPO_MAT.zip" ];
then
echo "REPO_MAT.zip exists. Skipping.";
else
curl http://download.eclipse.org/mat/1.1.1/MemoryAnalyzer-1.1.1.201108240735.zip > REPO_MAT.zip;
fi

if [ -f "REPO_SEQUOYAH.zip" ];
then
echo "REPO_SEQUOYAH.zip exists. Skipping.";
else
curl http://download.eclipse.org/sequoyah/downloads/drops/2.1/2.1.1.N20120718-0509/org.eclipse.sequoyah.feature.2.1.1.N20120718-0509.zip > REPO_SEQUOYAH.zip;
fi

if [ -f "REPO_EGIT.zip" ];
then
echo "REPO_EGIT.zip exists. Skipping.";
else
curl http://download.eclipse.org/egit/updates-2.0/org.eclipse.egit.repository-2.0.0.201206130900-r.zip > REPO_EGIT.zip;
fi

if [ -f "REPO_MYLYN.zip" ];
then
echo "REPO_MYLYN.zip exists. Skipping.";
else
curl http://ftp.osuosl.org/pub/eclipse/mylyn/drops/3.8.0/v20120612-0600/mylyn-3.8.0.v20120612-0600.zip > REPO_MYLYN.zip;
fi

if [ -f "REPO_ADT.zip" ];
then
echo "REPO_ADT.zip exists. Skipping.";
else
curl http://dl.google.com/android/ADT-20.0.3.zip > REPO_ADT.zip;
fi

# call unzip -q if it exists on all the downloaded repos
# unzip -q REPO_EGIT.zip -d ./REPO_EGIT
if ! [ -f "./REPO_ECLIPSE_PLATFORM/artifacts.jar" ];
then 
unzip -q REPO_ECLIPSE_PLATFORM.zip -d ./REPO_ECLIPSE_PLATFORM;
fi

if ! [ -f "./REPO_BIRT/artifacts.jar" ];
then 
unzip -q REPO_BIRT.zip -d ./REPO_BIRT;
fi

if ! [ -f "./REPO_EMF_XSD_SDO/artifacts.jar" ];
then 
unzip -q REPO_EMF_XSD_SDO.zip -d ./REPO_EMF_XSD_SDO;
fi

if ! [ -f "./REPO_JDT/artifacts.jar" ];
then 
unzip -q REPO_JDT.zip -d ./REPO_JDT;
fi

if ! [ -f "./REPO_PDE/artifacts.jar" ];
then 
unzip -q REPO_PDE.zip -d ./REPO_PDE;
fi

if ! [ -f "./REPO_WTP/artifacts.jar" ];
then 
unzip -q REPO_WTP.zip -d ./REPO_WTP;
fi

if ! [ -f "./REPO_MAT/artifacts.jar" ];
then 
unzip -q REPO_MAT.zip -d ./REPO_MAT;
fi

if ! [ -f "./REPO_SEQUOYAH/artifacts.jar" ];
then 
unzip -q REPO_SEQUOYAH.zip -d ./REPO_SEQUOYAH;
fi

if ! [ -f "./REPO_EGIT/artifacts.jar" ];
then 
unzip -q REPO_EGIT.zip -d ./REPO_EGIT;
fi

if ! [ -f "./REPO_MYLYN/artifacts.jar" ];
then 
unzip -q REPO_MYLYN.zip -d ./REPO_MYLYN;
fi

if ! [ -f "./REPO_ADT/site.xml" ];
then 
unzip -q REPO_ADT.zip -d ./REPO_ADT;
fi

# Get the MOTODEV plugins code
cd $BUILD_BASE_PATH
cd ./env/code
git clone https://android.googlesource.com/platform/tools/motodev.git
mv motodev/ android

# Get the eclipse SDK + delta pack
cd $BUILD_BASE_PATH
if [ "$BUILD_TARGET" == "WINDOWS" ];
then
	if [ -f "eclipse-SDK-4.2-win32-x86_64.zip" ];
	then
	echo "eclipse-SDK-4.2-win32-x86_64.zip exists. Skipping.";
	else
	curl http://download.eclipse.org/eclipse/downloads/drops4/R-4.2-201206081400/eclipse-SDK-4.2-win32-x86_64.zip > eclipse-SDK-4.2-win32-x86_64.zip;
	fi

	if ! [ -f "./env/eclipse/artifacts.xml" ];
	then 
	unzip -q eclipse-SDK-4.2-win32-x86_64.zip -d ./env;
	fi
elif [ "$BUILD_TARGET" == "LINUX" ];
then
	if [ -f "eclipse-SDK-4.2-linux-gtk-x86_64.tar.gz" ];
	then
	echo "eclipse-SDK-4.2-linux-gtk-x86_64.tar.gz exists. Skipping.";
	else
	curl http://download.eclipse.org/eclipse/downloads/drops4/R-4.2-201206081400/eclipse-SDK-4.2-linux-gtk-x86_64.tar.gz > eclipse-SDK-4.2-linux-gtk-x86_64.tar.gz;
	fi

	if ! [ -f "./env/eclipse/artifacts.xml" ];
	then 
	tar -xcf eclipse-SDK-4.2-linux-gtk-x86_64.tar.gz -C ./env
	fi
fi

if [ -f "eclipse-4.2-delta-pack.zip" ];
then
echo "eclipse-4.2-delta-pack.zip exists. Skipping.";
else
curl http://download.eclipse.org/eclipse/downloads/drops4/R-4.2-201206081400/eclipse-4.2-delta-pack.zip > eclipse-4.2-delta-pack.zip;
fi

unzip -q -o eclipse-4.2-delta-pack.zip -d ./env

# These two are in an incompatible format
cd $BUILD_BASE_PATH
mkdir ./TEMP

if ! [ -f "$BUILD_BASE_PATH/TEMP/REPO_DATATOOLS/eclipse/notice.html" ];
then
unzip -q ./input/repository/base/REPO_DATATOOLS.zip -d ./TEMP/REPO_DATATOOLS;
fi

if ! [ -f "$BUILD_BASE_PATH/input/repository/base/REPO_DATATOOLS/artifacts.jar" ];
then 
java -jar $ECLIPSE_BASE_PATH/plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file://$BUILD_BASE_PATH/input/repository/base/REPO_DATATOOLS -artifactRepository file://$BUILD_BASE_PATH/input/repository/base/REPO_DATATOOLS -source $BUILD_BASE_PATH/TEMP/REPO_DATATOOLS/eclipse -compress -publishArtifacts ;
fi

if ! [ -f "$BUILD_BASE_PATH/TEMP/REPO_GEF/eclipse/plugins/org.eclipse.gef_3.8.0.201206112118.jar" ];
then
unzip -q ./input/repository/base/REPO_GEF.zip -d ./TEMP/REPO_GEF ;
fi

if ! [ -f "$BUILD_BASE_PATH/input/repository/base/REPO_GEF/artifacts.jar" ];
then 
java -jar $ECLIPSE_BASE_PATH/plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file://$BUILD_BASE_PATH/input/repository/base/REPO_GEF -artifactRepository file://$BUILD_BASE_PATH/input/repository/base/REPO_GEF -source $BUILD_BASE_PATH/TEMP/REPO_GEF/eclipse -compress -publishArtifacts ;
fi

# Now that everything is in place, create these two variables
export ADT_JAR_FILENAME=`ls input/repository/base/REPO_ADT/plugins | grep eclipse.adt_ | sed "s/.jar//"`
export DDMS_JAR_FILENAME=`ls input/repository/base/REPO_ADT/plugins | grep eclipse.ddms_ | sed "s/.jar//"`

# Run the eclipse to build the plugins
$ECLIPSE_BASE_PATH/eclipse -nosplash -application org.eclipse.ant.core.antRunner -data $BUILD_BASE_PATH/env/workspace_product -buildfile $BUILD_BASE_PATH/env/code/android/makefile/studioBuild.xml -debug
# Add these items to the build command line if you want a log file
#-logger org.apache.tools.ant.XmlLogger -logfile $BUILD_BASE_PATH/log.xml

