#!/usr/bin/env bash
set -euo pipefail

log() {
  printf '[release] %s\n' "$*"
}

die() {
  printf '[release][ERROR] %s\n' "$*" >&2
  exit 1
}

upper() {
  printf '%s' "$1" | tr '[:lower:]' '[:upper:]'
}

require_cmd() {
  command -v "$1" >/dev/null 2>&1 || die "Comando richiesto non trovato: $1"
}

build_release_id() {
  local release_version="${RELEASE_VERSION:-}"
  local bitbucket_tag="${BITBUCKET_TAG:-}"
  local build_number="${BITBUCKET_BUILD_NUMBER:-0}"

  if [[ -n "$release_version" ]]; then
    printf '%s' "$release_version"
    return
  fi

  if [[ -n "$bitbucket_tag" ]]; then
    printf '%s_%s' "$bitbucket_tag" "$build_number"
    return
  fi

  printf '%s_%s' "$(date +%Y%m%d_%H%M%S)" "$build_number"
}

write_release_meta() {
  local meta_file="$1"
  cat >"$meta_file" <<METAEOF
RELEASE_ID=$RELEASE_ID
ARCHIVE_NAME=$ARCHIVE_NAME
CLIENT=$CLIENT
ENV=$ENV
RELEASE_MODE=$RELEASE_MODE
METAEOF
}
