###############################################################################
# Copyright (c) 2005, 2006 IBM Corporation and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
# properties for: RSSFeedCreateFeedTask.java, RSSFeedAddEntryTask.java, RSSFeedGetPropertyTask.java, RSSFeedUpdateEntryTask.java, RSSFeedPublisherTask.java

# TODO: split into two files for EMFT and MDT projects so that paths are correct

# pass in %%project%% (ocl, transaction, etc.); %%typeSuffix%% ("-N" or ""); %%user%% (cdamus, nickb, etc.)

# one of 0|1|2
debug=0

# if file does not exist, it will be created; if it does, it will be modified; directory must exist
file=/var/www/html/emft/feeds/builds-%%project%%%%typeSuffix%%.xml

# required
#project=ocl
#branch=HEAD
#version=2.3.0
#buildID=S200607081234
feedURL=http://download.eclipse.org/technology/emft/feeds/builds-%%project%%%%typeSuffix%%.xml
buildURL=http://www.eclipse.org/emft/downloads/?showAll=1&hlbuild=%%buildID%%#%%buildID%%

# optional build alias, like 2.2.1RC2
#buildAlias=

# 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/modeling/emft/news/relnotes.php?proj=%%project%%&version=%%version%%
updateManagerURL=http://download.eclipse.org/technology/emft/updates/
downloadsURL=http://www.eclipse.org/emft/downloads/?project=%%project%%

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

# optional: one of NONE|BUILDCOMPLETE|UMSITEREADY|CALLISTOSITEREADY|COMPLETE 
coordinatedStatus=
# 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=

#optional
JUnitTestURL=http://www.eclipse.org/downloads/download.php?r=1&file=/technology/emft/%%project%%/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,emft-ocl-SDK-%%buildAlias%%.zip
Releases=ALL,ALL,ALL,SDK,emft-%%project%%-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=%%user%%@dev.eclipse.org:/cvsroot/org.eclipse
# cvs/module/path
cvsPath=www/emft/feeds
# ~/tmp/folder/path/for/checkout
cvsTemp=/tmp/tmp-RSSFeedPublisherTask-emft-%%project%%-%%user%%

# /path/to/scp/executable
scpExec=/usr/bin/scp
# user@server:/path/to/destination/file.xml - destintion folder MUST ALREADY EXIST
scpTarget=%%user%%@download1.eclipse.org:/home/data/httpd/download.eclipse.org/technology/emft/feeds/builds-%%project%%%%typeSuffix%%.xml

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