#!/bin/bash -xe

REPO=egroupware
IMAGE=development
BASE=node:20-bookworm-slim
RECOMMENDED_PHP_VERSION=8.3

PHP_VERSION=${1:-$RECOMMENDED_PHP_VERSION}

TAG=$(docker run --rm -i --entrypoint bash $REPO/$IMAGE:latest -c "apt update && apt search php$PHP_VERSION-fpm" 2>/dev/null|grep php$PHP_VERSION-fpm|head -1|sed "s|^php$PHP_VERSION-fpm/[^ ]* .*\([78]\.[0-9]*\.[0-9]*\).*|\1|g")
test -z "$TAG" && {
	echo "Can't get new tag of $REPO/$IMAGE container --> existing"
	exit 1
}

DEFAULT=$(git branch|grep ^*|cut -c3-)
VERSION=${2:-$DEFAULT}
BRANCH=$(echo $VERSION|sed 's/\.[0-9]\{8\}$//')
[ $VERSION = $BRANCH ] && VERSION="$BRANCH.x-dev"

[ $BRANCH = "master" ] && {
	VERSION=dev-master
}
echo -e "\nbuilding $REPO/$IMAGE:$TAG\n"

cd $(dirname $0)

docker pull $BASE
docker build --no-cache --build-arg "VERSION=$VERSION" --build-arg="PHP_VERSION=$PHP_VERSION" -t $REPO/$IMAGE:$TAG . && {
	docker push $REPO/$IMAGE:$TAG

	# tag master by major PHP version eg. 8.1
	[ $BRANCH = "master" ] && {
    docker tag $REPO/$IMAGE:$TAG $REPO/$IMAGE:$PHP_VERSION
    docker push $REPO/$IMAGE:$PHP_VERSION
  }

	# tag only recommended PHP version as latest and $BRANCH (eg. master)
	[ $PHP_VERSION = $RECOMMENDED_PHP_VERSION ] && {
	  [ $BRANCH = "master" ] && {
      docker tag $REPO/$IMAGE:$TAG $REPO/$IMAGE:latest
      docker push $REPO/$IMAGE:latest
    }
		docker tag $REPO/$IMAGE:$TAG $REPO/$IMAGE:$BRANCH
		docker push $REPO/$IMAGE:$BRANCH
	}
}