#!/bin/sh

if [ $# != 2 ]
then
	echo "Usage: ${0} dropsDir sdkVersion
fi

dropsDir=$1
sdkVersion=$2

# below: verbatim copy of Job-script on Jenkins:

#!/bin/bash


SDK=eclipse-SDK-${sdkVersion}-linux-gtk-x86_64.tar.gz
wget -nv https://download.eclipse.org/eclipse/downloads/drops4/${dropDir}/${SDK}


if [ ! -r $SDK ]
then
		echo "Can't read SDK from $SDK"
		exit 1
fi

PDEBUILD=eclipse/plugins/org.eclipse.pde.build_.*/about.html
LAUNCHER=eclipse/plugins/org.eclipse.equinox.launcher_
JDTFEATURE=eclipse/features/org.eclipse.jdt_.*/feature.xml
JDT_COMPILER_APT=eclipse/plugins/org.eclipse.jdt.compiler.apt_
JDT_COMPILER_TOOL=eclipse/plugins/org.eclipse.jdt.compiler.tool_

for VERSION in `tar tzvf $SDK | egrep "${PDEBUILD}|${LAUNCHER}|${JDTFEATURE}|${JDT_COMPILER_APT}|${JDT_COMPILER_TOOL}" | sed -e "s#.*eclipse/[^/]*/\([^/]*\).*#\1#"`

do
	case $VERSION in
		org.eclipse.pde.build*)
			PDEBUILD_VERSION=$VERSION
			;;
		org.eclipse.jdt.compiler.apt*)
			JDT_COMPILER_APT_VERSION=$VERSION
			;;
		org.eclipse.jdt.compiler.tool*)
			JDT_COMPILER_TOOL_VERSION=$VERSION
			;;
		org.eclipse.jdt*)
			JDT_VERSION_ALL=`echo $VERSION|grep jdt | sed -e 's/org.eclipse.jdt_\(.*\)/\1/'`
			JDT_VERSIONA=`echo ${JDT_VERSION_ALL}| sed -e 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\.[^-]*-\)[0-9]\{4\}.*/\1/'`
			JDT_VERSIONB=`echo ${JDT_VERSION_ALL}| sed -e   's/[0-9]\+\.[0-9]\+\.[0-9]\+\.[^-]*-\([0-9]\{4\}\).*/\1/'`
			JDT_VERSIONB_NEXT=`expr $JDT_VERSIONB + 1`
			JDT_VERSIONB_NEXT=`printf "%04d" ${JDT_VERSIONB_NEXT}`
			;;
		org.eclipse.equinox.launcher*)
			LAUNCHER_VERSION=$VERSION
			;;
	esac
done
echo
echo "Variables for otdt_prerequisites_hipp.sh:"
echo "========================================="
echo "EVERSION=\${EVERSION:=\"${sdkVersion}\"}"
echo "DROP=\${DROPS4}/\${DROP:=\"${dropDir}\"}"
echo

echo "Versions for run.properties:"
echo "============================"
echo "# Details of the Eclipse SDK built upon:"
echo "run.eclipseScriptDir=plugins/${PDEBUILD_VERSION}/scripts"
echo "org.eclipse.equinox.launcher_jar=${LAUNCHER_VERSION}"
echo
echo "# for patching our patch feature to match this version with any suffix:"
echo "jdt.feature.version=${JDT_VERSIONA}${JDT_VERSIONB}"
echo "jdt.feature.version.next=${JDT_VERSIONA}${JDT_VERSIONB_NEXT}"
echo
echo "# jdt.core fragments for extracting pre-built classes and properties:"
echo "jdt.compiler.apt=${JDT_COMPILER_APT_VERSION}"
echo "jdt.compiler.tool=${JDT_COMPILER_TOOL_VERSION}"

echo
echo "Version for org.eclipse.objectteams.otdt.core.patch.feature:"
echo "============================================================"
echo "      <import feature=\"org.eclipse.jdt\" version=\"${JDT_VERSION_ALL}\" patch=\"true\"/>"


echo "==================================="

