#!/usr/bin/bash

# Wrapper for the grafana binary
# This file serves as a wrapper for the grafana binary. It ensures we set
# the system-wide Grafana configuration that was bundled with the package as we
# use the binary.

DEFAULT=/etc/sysconfig/grafana-server

GRAFANA_HOME="${GRAFANA_HOME:-/usr/share/grafana}"

CONF_DIR=/etc/grafana
DATA_DIR=/var/lib/grafana
PLUGINS_DIR=/var/lib/grafana/plugins
LOG_DIR=/var/log/grafana
LIBEXEC_DIR=/usr/libexec/grafana

CONF_FILE=$CONF_DIR/grafana.ini
PROVISIONING_CFG_DIR=$CONF_DIR/provisioning

EXECUTABLE=$LIBEXEC_DIR/grafana-cli

if [ ! -x $EXECUTABLE ]; then
 echo "$EXECUTABLE not installed or not executable"
 exit 5
fi

# overwrite settings from default file
if [ -f "$DEFAULT" ]; then
  . "$DEFAULT"
fi

OPTS=("--homepath=${GRAFANA_HOME}"
      "--config=${CONF_FILE}"
      "--pluginsDir=${PLUGINS_DIR}"
      "--configOverrides=cfg:default.paths.provisioning=$PROVISIONING_CFG_DIR \
                         cfg:default.paths.data=${DATA_DIR} \
                         cfg:default.paths.logs=${LOG_DIR} \
                         cfg:default.paths.plugins=${PLUGINS_DIR}")

CMD=cli

if [ "$(id -u)" -eq 0 -o "$(id -g)" -eq 0 ]; then
  cd "${GRAFANA_HOME}"
  exec runuser -u "${GRAFANA_USER}" -- "$EXECUTABLE" "${OPTS[@]}" "$@"
elif [ "$(id -u -n)" = "${GRAFANA_USER}" ]; then
  cd "${GRAFANA_HOME}"
  exec "$EXECUTABLE" "${OPTS[@]}" "$@"
else
  echo "$0: please run this script as user \"${GRAFANA_USER}\" or root."
  exit 5
fi
