#!/usr/bin/with-contenv bash

# set default values for variables
declare -A DISKOVER_CONF
DISKOVER_CONF[REDIS_HOST]=${REDIS_HOST:-redis}
DISKOVER_CONF[REDIS_PORT]=${REDIS_PORT:-6379}
DISKOVER_CONF[ES_HOST]=${ES_HOST:-elasticsearch}
DISKOVER_CONF[ES_PORT]=${ES_PORT:-9200}
DISKOVER_CONF[ES_USER]=${ES_USER:-elastic}
DISKOVER_CONF[ES_PASS]=${ES_PASS:-changeme}
DISKOVER_CONF[RUN_ON_START]=${RUN_ON_START:-false}
DISKOVER_CONF[USE_CRON]=${USE_CRON:-false}

# persist env variables
if [ ! -f "/config/.env" ]; then
	# sed in values or skip if value not set
	for KEY in "${!DISKOVER_CONF[@]}"; do \
	if [[ ${DISKOVER_CONF[$KEY]} == "" ]]; then \
	:
	else echo "export $KEY=${DISKOVER_CONF[$KEY]}" >> /config/.env
	fi
	done
fi

if [ ! -f "/etc/profile.d/diskover.sh" ]; then
	ln -s /config/.env /etc/profile.d/diskover.sh
fi

# create folders
mkdir -p \
	/config/{log/diskover,crontabs}

if [ ! -f "/config/diskover.cfg" ]; then
	mv /defaults/diskover.cfg /config/diskover.cfg
	for KEY in "${!DISKOVER_CONF[@]}"; do \
	if [[ ${DISKOVER_CONF[$KEY]} == "" ]]; then \
	:
	else sed -i 's|{{'$KEY'}}|'${DISKOVER_CONF[$KEY]}'|g' /config/diskover.cfg
	fi
	done
fi

if [ ! -f "/app/diskover/diskover.cfg" ]; then
	ln -s /config/diskover.cfg /app/diskover/diskover.cfg
fi

# copy crontab and proxy defaults if needed
[[ ! -f /config/crontabs/abc ]] && \
	cp /etc/crontabs/abc /config/crontabs/

# import user crontabs
rm /etc/crontabs/*
if [ ${DISKOVER_CONF[USE_CRON]} == true ]; then
	cp /config/crontabs/* /etc/crontabs/
fi

# permissions
chmod +x \
	/app/dispatcher.sh
chown -R abc:abc \
	/app/diskover \
	/config

# run initial retrieval or just start some worker bots
if [ ${DISKOVER_CONF[RUN_ON_START]} == true ]; then
	echo "Initial run of dispatcher in progress"
	# sleep to allow time for elasticsearch to start
	sleep 10
	exec \
		s6-setuidgid abc /app/dispatcher.sh >> /config/log/diskover/dispatcher.log 2>&1 &
else
	echo "Starting worker bots"
	# sleep to allow time for elasticsearch to start
	sleep 10
	exec \
		s6-setuidgid abc cd /app/diskover && ./diskover-bot-launcher.sh
fi