#!/bin/sh

# Checks if Plume has already been launched one
# Otherwise, initialize the instance and create
# a file at FIRSTLAUNCH_PATH to indicate that the
# instance has already been initialized
# FIRSTLAUNCH_PATH is configured via environment
#
# Also manage running migrations when updating

if [ -z "${POSTGRES_PASSWORD}" ]; then
	echo >&2 'Error : missing required ${POSTGRES_PASSWORD} environment variable, exiting.'
	exit 1
fi
if [ -z "${POSTGRES_USER}" ]; then
	echo >&2 'Error : missing required ${POSTGRES_USER} environment variable, exiting.'
	exit 1
fi
if [ -z "${POSTGRES_DB}" ]; then
	echo >&2 'Error : missing required ${POSTGRES_DB} environment variable, exiting.'
	exit 1
fi


# Wait for database to be ready
while ! PGPASSWORD="${POSTGRES_PASSWORD}" psql -h"${DB_HOST}" -U"${POSTGRES_USER}" -d"${POSTGRES_DB}" -c "SELECT 1" &>/dev/null; do
  echo "Database server not ready yet, re-trying in 5 seconds..."
  sleep 5
done

# If first launch, initialize and create marker file
if [ ! -f ${FIRSTLAUNCH_PATH} ]; then
  echo "First launch detected."
  echo "Initialize search index..."
  plume plm search init
  echo "Initialize instance..."
  plume plm instance new -d '$URL' -n '$NAME' -l 'CC-BY-SA'
  echo "Create admin user..."
  plume plm users new -n '$ADMIN_USER' -N '$ADMIN_NAME' -b '' -e '$ADMIN_EMAIL' -p '$ADMIN_PASS' --admin
  echo "Done."
  touch ${FIRSTLAUNCH_PATH}
fi

# Check if we updated since last launch
if [ ${PLUME_VERSION} != $(cat ${FIRSTLAUNCH_PATH}) ]; then
   # If so, we need to run migrations
   echo "Instance updated since last launch, running migrations..."
   plume plm migration run
fi

# Now write the version if the file
echo "${PLUME_VERSION}" > ${FIRSTLAUNCH_PATH}
echo "Launching Plume..."
