# QVTo publisher properties for use by the promoter job:
#
# rm -f downloads.sh updates.sh
# curl -s ${PUBLISH__DOWNLOADS_SH} > downloads.sh
# curl -s ${PUBLISH__UPDATES_SH} > updates.sh
# ssh genie.qvt-oml@projects-storage.eclipse.org rm -f downloads.sh updates.sh
# scp downloads.sh genie.qvt-oml@projects-storage.eclipse.org:downloads.sh
# scp updates.sh genie.qvt-oml@projects-storage.eclipse.org:updates.sh
# ssh genie.qvt-oml@projects-storage.eclipse.org chmod +x downloads.sh updates.sh
# ssh genie.qvt-oml@projects-storage.eclipse.org bash -ex downloads.sh -u "'${PUBLISH__URL}'" -v "'${PUBLISH__VERSION}'" -t "'${PUBLISH__BUILD_T}'" -q "'${PUBLISH__QUALIFIER}'" -a "'${PUBLISH__ALIAS}'" -j "'${PUBLISH__JAVADOC}'"
# ssh genie.qvt-oml@projects-storage.eclipse.org bash -ex updates.sh -u "'${PUBLISH__URL}'" -v "'${PUBLISH__VERSION}'" -t "'${PUBLISH__BUILD_T}'" -q "'${PUBLISH__QUALIFIER}'"

#
PUBLISH__ALIAS=${BUILD_ALIAS}
PUBLISH__BUILD_T=${buildType}
PUBLISH__DOWNLOADS_SH=${env.JOB_URL}${env.BUILD_NUMBER}/artifact/releng/org.eclipse.qvto.releng.build-site/target/downloads.sh
PUBLISH__JAVADOC=${env.JOB_URL}${env.BUILD_NUMBER}/artifact/releng/org.eclipse.qvto.releng.build-site/target/QVTo-javadoc.zip
PUBLISH__QUALIFIER=${buildId}
PUBLISH__UPDATES_SH=${env.JOB_URL}${env.BUILD_NUMBER}/artifact/releng/org.eclipse.qvto.releng.build-site/target/updates.sh
PUBLISH__URL=${env.JOB_URL}${env.BUILD_NUMBER}/artifact/releng/org.eclipse.qvto.releng.build-site/target/${project.groupId}-${unqualifiedVersion}.${buildId}.zip
PUBLISH__VERSION=${unqualifiedVersion}
