#!/usr/bin/env bash

# common variables used in scripts

# Typically, for local use, nothing needs to be set here and
# technically does not need to exist. But have left for
# a starting point if users doing "local builds" need to
# override anything.
#
# See the top of the build.xml file for some properties that
# may be desired to override.
#
# See the production.properties file for what
# we override in production builds.
#
# NOTE: see where this file is called in the "init" target,
# and notice by the time it is called, several variables have
# already been set. That means those "already set" variables
# are not candidates for this file, unless build.xml is changed
# so these properties are loaded earlier. They could be
# overridden by passing as "environment variables" or directly
# on command line, such as -DBUILD_HOME=${PWD}/buildarea
# At the time of this writing, these properties include the list below.
# Of these listed only the 'release' typically needs to be set
# in production builds (is is not required for simple local aggregation).
# JAVA_HOME
# BUILD_HOME
# release (aka train name)
#
# as well as ones that should probably never be overridden,
# such as
# buildTimestamp
# jobName
# jobNumber
# buildToolsDir (assumed to be ${BUILD_HOME}/org.eclipse.simrel.tools)
# buildModelDir (assumed to be ${BUILD_HOME}/org.eclipse.simrel.build)
