mirror of
				https://github.com/zokradonh/kopano-docker
				synced 2025-10-31 10:27:14 +00:00 
			
		
		
		
	also push the build helper into the docker hub Signed-off-by: Felix Bartels <felix@host-consultants.de>
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| set -euo pipefail
 | |
| IFS=$'\n\t'
 | |
| 
 | |
| if ! command -v reg > /dev/null; then
 | |
| 	echo "Please install reg to list available tags. Until then please only press enter and don't enter a version number when being asked for a tag."
 | |
| fi
 | |
| 
 | |
| if [ ! -e ./.env ]; then
 | |
| 	echo "please run setup.sh first"
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| function finish {
 | |
| 	if [ -e "$tmpfile" ]; then
 | |
| 		rm "$tmpfile"
 | |
| 	fi
 | |
| }
 | |
| trap finish EXIT
 | |
| 
 | |
| # this is a kind of ugly hack to be able to source the env file
 | |
| # this is sadly needed since postfix in https://github.com/tomav/docker-mailserver/ cannot deal with quoted values
 | |
| tmpfile=$(mktemp /tmp/kopano-docker-env.XXXXXX)
 | |
| cp ./.env "$tmpfile"
 | |
| sed -i '/LDAP_QUERY_FILTER/s/^/#/g' "$tmpfile"
 | |
| sed -i '/SASLAUTHD_LDAP_FILTER/s/^/#/g' "$tmpfile"
 | |
| sed -i '/KCUNCOMMENT_LDAP_1/s/^/#/g' "$tmpfile"
 | |
| sed -i '/KCCOMMENT_LDAP_1/s/^/#/g' "$tmpfile"
 | |
| # shellcheck disable=SC1090
 | |
| source "$tmpfile"
 | |
| 
 | |
| # define a default docker_repo in case its not in .env
 | |
| docker_repo=${docker_repo:-zokradonh}
 | |
| 
 | |
| docker_tag_search () {
 | |
| 	image="$1"
 | |
| 	results=$(reg tags "$image" 2> /dev/null)
 | |
| 	echo "$results" | xargs -n1 | sort --version-sort -ru
 | |
| }
 | |
| 
 | |
| # function from https://stackoverflow.com/a/42790579/4754613
 | |
| selectWithDefault() {
 | |
| 
 | |
| 	local item i=0 numItems=$#
 | |
| 
 | |
| 	# Print numbered menu items, based on the arguments passed.
 | |
| 	for item; do         # Short for: for item in "$@"; do
 | |
| 		printf '%s\n' "$((++i))) $item"
 | |
| 	done >&2 # Print to stderr, as `select` does.
 | |
| 
 | |
| 	# Prompt the user for the index of the desired item.
 | |
| 	while :; do
 | |
| 		printf %s "${PS3-#? }" >&2 # Print the prompt string to stderr, as `select` does.
 | |
| 		read -r index
 | |
| 		# Make sure that the input is either empty or that a valid index was entered.
 | |
| 		[[ -z $index ]] && break  # empty input
 | |
| 		(( index >= 1 && index <= numItems )) 2>/dev/null || { echo "Invalid selection. Please try again." >&2; continue; }
 | |
| 		break
 | |
| 	done
 | |
| 
 | |
| 	# Output the selected item, if any.
 | |
| 	[[ -n $index ]] && printf %s "${@: index:1}"
 | |
| }
 | |
| 
 | |
| update_env_file () {
 | |
| 	varname="$1"
 | |
| 	varvalue="$2"
 | |
| 	if ! grep -q "$varname" ./.env; then
 | |
| 		echo "$varname=$varvalue" >> ./.env
 | |
| 	else
 | |
| 		sed -i "/$varname/c $varname=$varvalue" ./.env
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| tag_question () {
 | |
| 	containername="$1"
 | |
| 	value_default="$2"
 | |
| 	description="$3"
 | |
| 	echo "Which tag do you want to use for $description? [$value_default]"
 | |
| 	echo "Available tags in $docker_repo/$containername/: "
 | |
| 	set +e # do not exit when new_value is empty
 | |
| 	# shellcheck disable=SC2046
 | |
| 	new_value=$(selectWithDefault $(docker_tag_search "$docker_repo/$containername"))
 | |
| 	set -e
 | |
| 	return_value=${new_value:-$value_default}
 | |
| }
 | |
| 
 | |
| echo "Please be aware that downgrading to an older version could result in failure to start!"
 | |
| 
 | |
| tag_question kopano_core "${CORE_VERSION:-latest}" "Kopano Core components"
 | |
| update_env_file CORE_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_webapp "${WEBAPP_VERSION:-latest}" "Kopano WebApp"
 | |
| update_env_file WEBAPP_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_web "${KWEB_VERSION:-latest}" "reverse proxy"
 | |
| update_env_file KWEB_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_zpush "${ZPUSH_VERSION:-latest}" "Z-Push"
 | |
| update_env_file ZPUSH_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_kdav "${KDAV_VERSION:-latest}" "kDAV"
 | |
| update_env_file KDAV_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_konnect "${KONNECT_VERSION:-latest}" "Kopano Konnect"
 | |
| update_env_file KONNECT_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_kwmserver "${KWM_VERSION:-latest}" "Kopano Kwmserver"
 | |
| update_env_file KWM_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_meet "${MEET_VERSION:-latest}" "Kopano Meet"
 | |
| update_env_file MEET_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_scheduler "${SCHEDULER_VERSION:-latest}" "Scheduler"
 | |
| update_env_file SCHEDULER_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_ssl "${SSL_VERSION:-latest}" "SSL helper container"
 | |
| update_env_file SSL_VERSION "$return_value"
 | |
| 
 | |
| tag_question kopano_ldap "${LDAP_VERSION:-latest}" "LDAP container"
 | |
| update_env_file LDAP_VERSION "$return_value"
 |