#! /usr/bin/env 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/default/grafana

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

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

EXECUTABLE="$GRAFANA_HOME/bin/grafana"

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

# Package-specific paths apply only to cli/server. The bare `grafana` binary
# does not accept --homepath etc. at the top level.
if [ "$1" = cli ] || [ "$1" = server ]; then
  CMD="$1"
  shift
  OPTS=(
    "--homepath=${GRAFANA_HOME}"
    "--config=${CONF_FILE}"
    "--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}"
  )
  # special handling to pass --pluginsDir to cli
  # can remove once it fully supports cfg:default.paths.plugins
  if [ "$CMD" = cli ]; then
    OPTS+=("--pluginsDir=${PLUGINS_DIR}")
  fi
  exec "$EXECUTABLE" "$CMD" "${OPTS[@]}" "$@"
fi

exec "$EXECUTABLE" "$@"
