#!/bin/sh

set -u
set -e

ARGS="$*"
echo "Arguments: $ARGS"

EXT_UID="${EXT_UID:-999}"
EXT_GID="${EXT_GID:-999}"
DOCMACHINE_DOCS_ENABLE="${DOCMACHINE_DOCS_ENABLE:-1}"
DOCMACHINE_SLIDES_ENABLE="${DOCMACHINE_SLIDES_ENABLE:-1}"

gx_workdir_prepare() {
	# Create missing directories
	mkdir -p _cache
	mkdir -p _build
	if [ "$DOCMACHINE_SLIDES_ENABLE" = "1" ]; then
		mkdir -p .marp
	fi
	mkdir -p /home/appuser
}

gx_users_prepare() {
	# Create user with given ID if needed
	if ! grep -q "^[^:]*:[^:]*:$EXT_UID:" /etc/group ; then
  		groupadd -g "$EXT_GID" appuser
	fi

	# Create group with given ID if needed
	if ! grep -q "^[^:]*:[^:]*:$EXT_UID:" /etc/passwd ; then
  		useradd -r -u "$EXT_UID" -g appuser appuser
	fi

	# echo "Setting permissions to $EXT_UID:$EXT_GID"
	# chown -R "$EXT_UID:$EXT_GID" _cache
	# chown -R "$EXT_UID:$EXT_GID" _build
	# chown -R "$EXT_UID:$EXT_GID" .marp
	# chown -R "$EXT_UID:$EXT_GID" /home/appuser
	# chown -R "$EXT_UID:$EXT_GID" slides
	# chown -R "$EXT_UID:$EXT_GID" docs
}

gx_docs_configure() {
# Patch mkdocs configuration 
if [ -f mkdocs-patch.yml ]; then
  # patch reference mkdocs with user-provided options
  yq eval-all '. as $item ireduce ({}; . * $item)' \
    mkdocs-source.yml \
    mkdocs-patch.yml \
    > mkdocs.yml
else
  # use reference mkdocs only (no options)
  ln -s mkdocs-source.yml mkdocs.yml
fi
}

##
## Main
## 
gx_workdir_prepare
gx_users_prepare
if [ "$DOCMACHINE_DOCS_ENABLE" = "1" ]; then
	gx_docs_configure
fi

if [ "$1" = "supershell" ]; then
  exec bash
else
  # exec gosu "$EXT_UID:$EXT_GID" make "$@"
  exec make "$@"
fi