# shellcheck shell=bash
# Keyman is copyright (C) SIL Global. MIT License.

#
# This script centralises sentry symbol uploads and releases
# Note: We must install sentry-cli on the build agents
#


## TODO: centralise debug information file (dif) uploads


function isSentryConfigured() {
  if [ -z "${SENTRY_AUTH_TOKEN-}" ] || [ -z "${SENTRY_ORG-}" ] || [ -z "${SENTRY_URL-}" ]; then
    echo "WARNING: Sentry environment variables SENTRY_AUTH_TOKEN, SENTRY_ORG and SENTRY_URL must be configured."
    return 1
  fi
  return 0
}

function isSentryCliAvailable() {
  which sentry-cli > /dev/null && return 0
  echo "WARNING: sentry-cli could not be found. Skipping all sentry integration."
  return 1
}

function makeSentryRelease() {
  if isSentryConfigured; then
    if isSentryCliAvailable; then
      # This version tag matches the repository version tag release@x.y.z
      echo "Making a Sentry release for tag $KEYMAN_VERSION_GIT_TAG"
      sentry-cli releases new -p keyman-android -p keyman-developer -p keyman-ios -p keyman-linux -p keyman-mac -p keyman-web -p keyman-windows $KEYMAN_VERSION_GIT_TAG

      echo "Setting commits for release tag $KEYMAN_VERSION_GIT_TAG"
      sentry-cli releases set-commits --auto $KEYMAN_VERSION_GIT_TAG

      echo "Finalizing release tag $KEYMAN_VERSION_GIT_TAG"
      sentry-cli releases finalize "$KEYMAN_VERSION_GIT_TAG"
    fi
  fi
}

