###############################################################################
# Copyright (c) 2005, 2006 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
# properties for: RSSFeedCreateFeedTask.java, RSSFeedAddEntryTask.java, RSSFeedGetPropertyTask.java, RSSFeedUpdateEntryTask.java, RSSFeedPublisherTask.java

# NOTE: if values are commented out (#), they must be passed in to Ant via commandline instead (eg., from emf's promoteToEclipse.sh when promoting a build)

# one of 0|1|2
debug=0

# if file does not exist, it will be created; if it does, it will be modified
#file=/var/www/emf/feeds/builds-emf-2.3.xml
file=../data/builds-emf-2.3.xml

# required
project=EMF
branch=HEAD
version=2.3.0
buildID=S200611091546
feedURL=http://download.eclipse.org/tools/emf/feeds/builds-emf-2.3.xml
buildURL=http://www.eclipse.org/emf/downloads/?showAll=1&hlbuild=%%buildID%%#%%buildID%%

# optional build alias, like 2.2.1RC2
buildAlias=2.3.0M3

# optional build type; one of: N, I, M, S, R; if not provided, will be pulled from buildID above
buildType=

# optional
buildDetailURL=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/emf/downloads/drops/%%version%%/%%buildID%%/
buildConfigURL=build.cfg
buildLogURL=buildlog.txt
buildMapURL=directory.txt

# optional
releaseNotesURL=http://www.eclipse.org/emf/news/release-notes.php?version=%%version%%
updateManagerURL=http://download.eclipse.org/tools/emf/updates/
downloadsURL=http://www.eclipse.org/emf/downloads/

# optional: one of NONE|UNSIGNED|SIGNREADY|BUILDREADY|SIGNED 
jarSigningStatus=

# optional: one of NONE|BUILDCOMPLETE|UMSITEREADY|CALLISTOSITEREADY|COMPLETE 
coordinatedStatus=CALLISTOSITEREADY
# optional: timestamp when will be ready (eg., 2006-05-02T20:50:00Z), or 
# project on which you're waiting (eg., TPTP)
coordinatedDetails=

# comma or space separated values
dependencyURLs=http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/M20060919-1045/eclipse-SDK-M20060919-1045-linux-gtk.tar.gz

# optional
JUnitTestURL=http://www.eclipse.org/downloads/download.php?r=1&file=/tools/emf/downloads/drops/%%version%%/%%buildID%%/testResults.php
performanceTestURL=
APITestURL=

# values to set for test results in quints of id,os,ws,arch,status,id,os,ws,arch,status,... 
JUnitTestResults=0,ALL,ALL,ALL,PASS
performanceTestResults=
APITestResults=

# values to set for release bundles in quints of os,ws,arch,name/type,filename,os,ws,arch,name/type,filename... 
# only need the filename; the full http URL can be assembled from buildURL + "/download.php?dropFile=" + filename or buildURL (switched to ftp://) + "/" + filename
# eg., ALL,ALL,ALL,SDK,emf-sdo-xsd-SDK-%%buildAlias%%.zip
Releases=ALL,ALL,ALL,SDK,emf-sdo-xsd-SDK-%%buildAlias%%.zip

########################################

# options for publishing files - need either an scp target or a cvs root/path, or both
# file (above) is required too

# /path/to/cvs/executable
cvsExec=/usr/bin/cvs
# user@cvsServer:/path/to/cvs/root
cvsRoot=nickb@dev.eclipse.org:/cvsroot/org.eclipse
# cvs/module/path
cvsPath=www/emf/feeds
# /tmp/folder/path/for/checkout
cvsTemp=/tmp/tmp-RSSFeedPublisherTask-emf-nickb

# /path/to/scp/executable
scpExec=/usr/bin/scp
# user@server:/path/to/destination/folder/ - destination folder MUST ALREADY EXIST
scpTarget=nickb@download1.eclipse.org:/home/data/httpd/download.eclipse.org/tools/emf/feeds/

# optionally, if the target folder might not exist, you can use ssh to create it before scp'ing the file
sshExec=/usr/bin/ssh

# for local testing purposes only
#cvsRoot=nickb@dbzi:/home/cvs
#cvsPath=tmp/foo
#scpTarget=nickb@dbzi:/tmp/foo/

