104 lines
4.2 KiB
Bash
Executable File
104 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Inspired by https://github.com/kartoza/docker-geoserver
|
|
|
|
function download_extension() {
|
|
URL=$1
|
|
EXTENSION=$2
|
|
VERSION=$3
|
|
DOWNLOAD_FILE="${ADDITIONAL_LIBS_DIR}geoserver-${VERSION}-${EXTENSION}-plugin.zip"
|
|
|
|
if [ -e "$DOWNLOAD_FILE" ]; then
|
|
echo "$DOWNLOAD_FILE already exists. Skipping download."
|
|
else
|
|
echo -e "\nDownloading ${EXTENSION} extension from ${URL} to ${DOWNLOAD_FILE}"
|
|
wget --progress=bar:force:noscroll -c $WGET_OPTS "${URL}" -O ${DOWNLOAD_FILE}
|
|
if [ "$?" != 0 ]; then
|
|
echo "ERROR downloading: ${URL}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function install_lib() {
|
|
ADDITIONAL_LIB=$1
|
|
if [ ! -e "$ADDITIONAL_LIB" ]; then
|
|
echo "Skipping ${ADDITIONAL_LIB}: file not found."
|
|
return
|
|
fi
|
|
|
|
if [[ $ADDITIONAL_LIB == *.zip ]]; then
|
|
unzip -q -o -d ${GEOSERVER_LIB_DIR} ${ADDITIONAL_LIB} "*.jar"
|
|
echo "Installed all jar files from ${ADDITIONAL_LIB}"
|
|
elif [[ $ADDITIONAL_LIB == *.jar ]]; then
|
|
cp ${ADDITIONAL_LIB} ${GEOSERVER_LIB_DIR}
|
|
echo "Installed ${ADDITIONAL_LIB}"
|
|
else
|
|
echo "Skipping ${ADDITIONAL_LIB}: unknown file extension."
|
|
fi
|
|
}
|
|
|
|
# Download plugins only if DOWNLOAD_EXTENSIONS is true
|
|
if [ "$DOWNLOAD_EXTENSIONS" = "true" ]; then
|
|
echo "Starting download of extensions"
|
|
if [ ! -d "$ADDITIONAL_LIBS_DIR" ]; then
|
|
mkdir -p $ADDITIONAL_LIBS_DIR
|
|
fi
|
|
for EXTENSION in $(echo "${STABLE_EXTENSIONS}" | tr ',' ' '); do
|
|
URL="${STABLE_PLUGIN_URL}/geoserver-${GEOSERVER_VERSION}-${EXTENSION}-plugin.zip"
|
|
download_extension ${URL} ${EXTENSION} ${GEOSERVER_VERSION}
|
|
done
|
|
if [ ${#COMMUNITY_EXTENSIONS} -gt 0 ]; then
|
|
# build community version string from GEOSERVER_VERSION by removing the last part and adding SNAPSHOT
|
|
if [ -z "$COMMUNITY_EXTENSIONS_VERSION" ]; then
|
|
COMMUNITY_EXTENSIONS_VERSION="${GEOSERVER_VERSION/-SNAPSHOT/.x}"
|
|
COMMUNITY_EXTENSIONS_VERSION="${COMMUNITY_EXTENSIONS_VERSION%.*}-SNAPSHOT"
|
|
fi
|
|
COMMUNITY_PLUGIN_BASE_URL=${COMMUNITY_PLUGIN_BASE_URL:-"https://build.geoserver.org/geoserver"}
|
|
if [ -z "$GEOSERVER_RELEASE_BRANCH" ]; then
|
|
GEOSERVER_RELEASE_BRANCH="${GEOSERVER_VERSION/-SNAPSHOT/.x}"
|
|
GEOSERVER_RELEASE_BRANCH="${GEOSERVER_RELEASE_BRANCH%.*}.x"
|
|
|
|
fi
|
|
COMMUNITY_PLUGIN_URL=${COMMUNITY_PLUGIN_URL:-"${COMMUNITY_PLUGIN_BASE_URL}/${GEOSERVER_RELEASE_BRANCH}/community-latest/"}
|
|
|
|
echo "installing community modules from COMMUNITY_PLUGIN_URL=${COMMUNITY_PLUGIN_URL} with GEOSERVER_RELEASE_BRANCH=${GEOSERVER_RELEASE_BRANCH} and COMMUNITY_EXTENSIONS_VERSION=${COMMUNITY_EXTENSIONS_VERSION} from GEOSERVER_VERSION=${GEOSERVER_VERSION}"
|
|
|
|
|
|
|
|
for EXTENSION in $(echo "${COMMUNITY_EXTENSIONS}" | tr ',' ' '); do
|
|
URL="${COMMUNITY_PLUGIN_URL}/geoserver-${COMMUNITY_EXTENSIONS_VERSION}-${EXTENSION}-plugin.zip"
|
|
# remove double slashes
|
|
URL=${URL/\/\//\/}
|
|
download_extension ${URL} ${EXTENSION} ${COMMUNITY_EXTENSIONS_VERSION}
|
|
done
|
|
fi
|
|
echo "Finished download of extensions"
|
|
else
|
|
echo "Skipping download of extensions as DOWNLOAD_EXTENSIONS is false"
|
|
fi
|
|
|
|
# Install the extensions only if INSTALL_EXTENSIONS is true
|
|
if [ "$INSTALL_EXTENSIONS" = "true" ]; then
|
|
echo "Starting installation of extensions"
|
|
for EXTENSION in $(echo "${STABLE_EXTENSIONS}" | tr ',' ' '); do
|
|
ADDITIONAL_LIB=${ADDITIONAL_LIBS_DIR}geoserver-${GEOSERVER_VERSION}-${EXTENSION}-plugin.zip
|
|
install_lib $ADDITIONAL_LIB
|
|
done
|
|
if [ ${#COMMUNITY_EXTENSIONS} -gt 0 ]; then
|
|
# print warning if COMMUNITY extensions are installed on an official release (where GEOSERVER_VERSION is not ending with -SNAPSHOT)
|
|
if [[ ! $GEOSERVER_VERSION == *-SNAPSHOT ]]; then
|
|
echo "WARNING: Installing community extensions on an official release version. Be sure to check compatibility."
|
|
fi
|
|
|
|
for EXTENSION in $(echo "${COMMUNITY_EXTENSIONS}" | tr ',' ' '); do
|
|
if [ -z "$COMMUNITY_EXTENSIONS_VERSION" ]; then
|
|
COMMUNITY_EXTENSIONS_VERSION="${GEOSERVER_VERSION%.*}-SNAPSHOT"
|
|
fi
|
|
ADDITIONAL_LIB=${ADDITIONAL_LIBS_DIR}geoserver-${COMMUNITY_EXTENSIONS_VERSION}-${EXTENSION}-plugin.zip
|
|
install_lib $ADDITIONAL_LIB
|
|
done
|
|
fi
|
|
echo "Finished installation of extensions"
|
|
else
|
|
echo "Skipping installation of extensions as INSTALL_EXTENSIONS is false"
|
|
fi
|