rem *******************************************************************************
rem  Copyright (c) 2005, 2007 IBM Corporation and others.
rem  All rights reserved. This program and the accompanying materials
rem  are made available under the terms of the Eclipse Public License v1.0
rem  which accompanies this distribution, and is available at
rem  http://www.eclipse.org/legal/epl-v10.html
rem 
rem  Contributors:
rem      IBM Corporation - initial API and implementation
rem *******************************************************************************
echo off
setlocal

REM *********** Local envars ***************************

REM The JRE java.exe to be used by Ant.  Note: for WTP 2.0 the JDK needs to be 1.5 or higher.
set JAVAEXE="C:\j2sdk1.4.2_07\jre\bin\java.exe"

REM The Eclipse install directory.  Some Eclipse based products may refer to this directory
REM as the non shared directory.
set INSTALL_DIRECTORY=d:\wtp\eclipse

REM The shared Eclipse features directory.  Some Eclipse based products may split their 
REM directory structure into shared and non shared folders.  The variable below should be
REM set to the shared directory.  Note: a default WTP installation does not split it's
REM directory structure so the INSTALL_DIRECTORY and the SHARED_DIRECTORY should be the same.
set SHARED_DIRECTORY=%INSTALL_DIRECTORY%

REM The Eclipse Equinox Launcher jar.  Usually this plugin jar file is located in the
REM shared plugin directory(ie. plugins\org.eclipse.equinox.launcher*.jar )
set LAUNCHER_JAR="%SHARED_DIRECTORY%\plugins\org.eclipse.equinox.launcher_1.0.0.v20070606.jar"

REM The location of your workspace
set WORKSPACE=D:\builds\wtp_20_ga\eclipse\workspace

REM ****************************************************

if not exist %JAVAEXE% echo ERROR: incorrect java.exe=%JAVAEXE%, edit this file and correct the JAVAEXE envar
if not exist %JAVAEXE% goto done

if not exist %LAUNCHER_JAR% echo ERROR: incorrect launcher jar=%LAUNCHER_JAR%, edit this file and correct the LAUNCHER_JAR envar
if not exist %LAUNCHER_JAR% goto done

:run
@echo on
%JAVAEXE% -jar %LAUNCHER_JAR% -install %INSTALL_DIRECTORY% -configuration %INSTALL_DIRECTORY%\configuration -application org.eclipse.ant.core.antRunner -data %WORKSPACE% -file wsgen.xml %* >wsgen.txt 2>&1

:done
pause
