# under development, not finished, untested

# 'shortname' effects all foldernames too, plus some content, in distribution section
# should be same name as this property file (for future use). 
shortname=wtpdali


# These first three properties are mainly for component templates

#  'featurename' assumes group of three features
#  a) featurename.feature
#  b) featurename_sdk.feature
#  c) featurename_tests.feature

featurename=org.eclipse.jpt

#  'zipprefix' is prefixed to -[type]-${buildlabel},
#  where type is empty, 'sdk' or 'tests',
#  usually of the form [top-level project]-[project]-[component]
#  for example, wtp-incubator-xmlsecurity
zipprefix=wtp-dali

#  'relengmapseng' must match the environment variable set in
#  commonComputedVariables, such as RELENGXMLSEC
relengmapsenv=RELENGDALI

#  prereq is the basic prereq on top of platform, jdt, emf, gef
#  (only realistic options for right now are wst, jst).
basicprereq=wtp

# These next properties are mainly for distribution template files

# longdescription appears on the download webpage
longdescription=The Zip file contains productized Dali Developer Tools

# testplugin is the "main" test plugin, which may "call" the others
testplugin=org.eclipse.jpt.core.tests

featuresuffix=.assembly.feature

# special case
sdksuffix=_sdk.assebly.feature

# omit (or set to true) for incubating projects for proper webpage
incubating=false