Skip to content

Instantly share code, notes, and snippets.

@boye
Created May 1, 2019 12:51
Show Gist options
  • Save boye/386698d7232ab93073e3147698330e88 to your computer and use it in GitHub Desktop.
Save boye/386698d7232ab93073e3147698330e88 to your computer and use it in GitHub Desktop.
Simple bash script that makes the maintenance of Be Informed projects easier
#!/bin/sh
if [ ! $# == 1 ] ; then
echo "Usage: $0 mts (project/branch)"
exit 1
fi
# Root base dir
BASEDIR="/Users/username/Development/beinformed"
# Base directory for Be Informed workspaces
WORKSPACEDIR="${BASEDIR}/workspace"
# Directory to store configuration files
CONFIGDIR="${WORKSPACEDIR}/bi-config"
# License files
AMSLICENSE="${CONFIGDIR}/license_file.lic"
# Default memory settings - used when not specified in cases below
XMS=1g
XMX=1g
# Studio configurations - also change -o option when adding/removing
case $1 in
opo-abb)
APPVER="3.16.0.2"
PORT="18753"
XMX=2g
;;
opo-lh)
APPVER="3.16.0.2"
PORT="18752"
XMX=2g
;;
opo-ogp)
APPVER="3.16.0.2"
PORT="18751"
XMX=2g
;;
opo-ogp-3162)
APPVER="3.16.2.0"
PORT="19751"
XMX=2g
;;
opo-lh-3162)
APPVER="3.16.2.0"
PORT="19752"
XMX=2g
;;
opo-abb-3162)
APPVER="3.16.2.0"
PORT="19753"
XMX=2g
;;
opo-ib-3162)
APPVER="3.16.2.0"
PORT="19754"
XMX=2g
;;
-o)
echo "opo-abb opo-lh opo-ogp opo-ogp-3162 opo-lh-3162 opo-abb-3162 opo-ib-3162"
exit
;;
*)
echo "Project not found"
exit 1
;;
esac
# Which studio?
STUDIOABBR="AMS"
if [[ "${APPVER}" == "4."* ]]; then
STUDIOABBR="BMS"
fi
# Studio app name change from Be Informed Studio to Be Informed AMS since 3.16.0.0
STUDIOAPPNAME="Be Informed Studio"
if [[ "${APPVER}" == "3.16."* ]] || [[ "${APPVER}" == "19."* ]]; then
STUDIOAPPNAME="Be Informed AMS"
fi
# Studio application directories
APPDIR="${BASEDIR}/studio/Be Informed ${STUDIOABBR} ${APPVER}"
APPCONTENTSDIR="${APPDIR}/${STUDIOAPPNAME}.app/Contents/MacOS"
# Custom configuration
DATADIR="${WORKSPACEDIR}/${1}"
CONFIG="${CONFIGDIR}/${1}-studio.ini"
PREFSDIR="${CONFIGDIR}/${1}"
DEPLOYMENTPROFILE="${CONFIGDIR}/${1}-deploymentprofile.xml"
# Eclipse configuration
ECLIPSEPLUGINSDIR="${DATADIR}/.metadata/.plugins"
ECLIPSEPREFSDIR="${ECLIPSEPLUGINSDIR}/org.eclipse.core.runtime/.settings"
ECLIPSEPREFSFILE="${ECLIPSEPREFSDIR}/org.eclipse.ui.ide.prefs"
ECLIPSEBEINFORMEDPREFSFILE="${ECLIPSEPREFSDIR}/nl.beinformed.bi.studio.tool.prefs"
ECLIPSESVNCOREPREFSFILE="${ECLIPSEPREFSDIR}/org.eclipse.team.svn.core.prefs"
ECLIPSESVNUIPREFSFILE="${ECLIPSEPREFSDIR}/org.eclipse.team.svn.ui.prefs"
ECLIPSEDEPLOYMENTPROFILEDIR="${ECLIPSEPLUGINSDIR}/nl.beinformed.bi.deployment.profile"
ECLIPSEDEPLOYMENTPROFILE="${ECLIPSEDEPLOYMENTPROFILEDIR}/profiles.xml"
# Copy studio ini when missing
if [ ! -f "${CONFIG}" ] ; then
if [ -f "${APPDIR}/${STUDIOAPPNAME}.ini" ] ; then
cp "${APPDIR}/${STUDIOAPPNAME}.ini" "${CONFIG}"
elif [ -f "${APPCONTENTSDIR}/${STUDIOAPPNAME}.ini" ] ; then
cp "${APPCONTENTSDIR}/${STUDIOAPPNAME}.ini" "${CONFIG}"
fi
# When copied, add config
if [ -f "${CONFIG}" ] ; then
sed -Ei '' "s/^(-Xms).*$/\1${XMS}/g" "${CONFIG}"
sed -Ei '' "s/^(-Xmx).*$/\1${XMX}/g" "${CONFIG}"
if [ "${STUDIOABBR}" == "AMS" ] ; then
echo "-Djetty.port=${PORT}" >> "${CONFIG}"
else
sed -Ei '' "s/^(-Dorg\.osgi\.service\.http\.port=)[0-9]+$/\1${PORT}/g" "${CONFIG}"
fi
fi
else
# Update settings
sed -Ei '' "s/^(-Xms).*$/\1${XMS}/g" "${CONFIG}"
sed -Ei '' "s/^(-Xmx).*$/\1${XMX}/g" "${CONFIG}"
if [ "${STUDIOABBR}" == "AMS" ] ; then
sed -Ei '' "s/^(-Djetty\.port=)[0-9]+$/\1${PORT}/g" "${CONFIG}"
else
sed -Ei '' "s/^(-Dorg\.osgi\.service\.http\.port=)[0-9]+$/\1${PORT}/g" "${CONFIG}"
fi
fi
# Create Eclipse preference dir in workspace
if [ ! -d "${ECLIPSEPREFSDIR}" ] ; then
mkdir -p "${ECLIPSEPREFSDIR}"
# Copy existing Eclipse preferences if available
if [ -d "${PREFSDIR}" ] ; then
cp "${PREFSDIR}/"* "${ECLIPSEPREFSDIR}"
fi
fi
# Copy/update Eclipse header
ECLIPSEHEADER="BI ${APPVER} - ${1} - localhost:${PORT}"
if [ ! -f "${ECLIPSEPREFSFILE}" ] ; then
echo "PROBLEMS_FILTERS_MIGRATE=true" > "${ECLIPSEPREFSFILE}"
echo "WORKSPACE_NAME=${ECLIPSEHEADER}" >> "${ECLIPSEPREFSFILE}"
echo "eclipse.preferences.version=1" >> "${ECLIPSEPREFSFILE}"
else
sed -Ei '' "s/^(WORKSPACE_NAME=).*$/\1${ECLIPSEHEADER}/g" "${ECLIPSEPREFSFILE}"
fi
if [ "${STUDIOABBR}" == "AMS" ] ; then
# Create Be Informed license reference for new workspaces
if [ ! -f "${ECLIPSEBEINFORMEDPREFSFILE}" ] ; then
echo "LICENSE_ACCEPTED_DATE=21-06-2018" > "${ECLIPSEBEINFORMEDPREFSFILE}"
echo "LICENSE_FILE_PATH=${AMSLICENSE}" >> "${ECLIPSEBEINFORMEDPREFSFILE}"
echo "eclipse.preferences.version=1" >> "${ECLIPSEBEINFORMEDPREFSFILE}"
fi
# Copy deployment profile for new workspaces
if [ -f "${DEPLOYMENTPROFILE}" ] ; then
if [ ! -d "${ECLIPSEDEPLOYMENTPROFILEDIR}" ] ; then
mkdir -p "${ECLIPSEDEPLOYMENTPROFILEDIR}"
fi
# Alleen overschrijven indien file niet bestaat
if [ ! -f "${ECLIPSEDEPLOYMENTPROFILE}" ] ; then
cp "${DEPLOYMENTPROFILE}" "${ECLIPSEDEPLOYMENTPROFILE}"
fi
fi
fi
# Startup!
clear
echo "Starting Be Informed ${APPVER} (${1}) using workspace ${DATADIR}"
echo "Configuration:"
cat "${CONFIG}"
# Use workaround in https://stackoverflow.com/questions/19563766/eclipse-kepler-for-os-x-mavericks-request-java-se-6?noredirect=1&lq=1
# in case direct open doesn't work. open -n <bundle> --args <eclipseArgs> works
# However, the console won't be available
"${APPDIR}/${STUDIOAPPNAME}.app/Contents/MacOS/${STUDIOAPPNAME}" \
-data "${DATADIR}" \
--launcher.ini "${CONFIG}"
# Save deployment profile
if [ -f "${ECLIPSEDEPLOYMENTPROFILE}" ] ; then
cp "${ECLIPSEDEPLOYMENTPROFILE}" "${DEPLOYMENTPROFILE}"
fi
# Save settings
if [ -d "${ECLIPSEPREFSDIR}" ] ; then
if [ ! -d "${PREFSDIR}" ] ; then
mkdir -p "${PREFSDIR}"
fi
cp "${ECLIPSEPREFSDIR}/"* "${PREFSDIR}"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment