#!/bin/sh

set -u

## Make a clean room
eval "$(
  env \
  |sed -n 's/^\([a-zA-Z0-9_]*\)=.*$/unset \1 || :/p' \
  |grep -E -v ' (_|PS[12]|PWD|PATH|TERM|HOME|LOGNAME|VENDOR_RPM_[A-Z_]*) '
)"
LC_ALL="C"
export LC_ALL

vendor_id="${VENDOR_RPM_VENDOR_ID-osstech}"
vendor_rpm_bootstrap="${VENDOR_RPM_BOOTSTRAP-}"
rpm_configdir="${VENDOR_RPM_CONFIGDIR-/usr/lib/rpm}"
rpmbuild_cmd="${VENDOR_RPM_RPMBUILD_COMMAND-/usr/bin/rpmbuild}"
rpm_vendor_configdir="${VENDOR_RPM_VENDOR_CONFIGDIR-$rpm_configdir/$vendor_id}"
rpm_vendor_macros="$rpm_vendor_configdir/macros.*:$rpm_vendor_configdir/macros:~/.rpmmacros.$vendor_id"

## ----------------------------------------------------------------------

## https://fedoraproject.org/wiki/Packaging:DistTag

# shellcheck disable=SC1091 # Not following: /etc/os-release was not specified as input
. /etc/os-release || exit $?

os_name="$ID"
os_dist="$ID"
os_ver="${VERSION_ID%%.*}"

case "$os_name" in
  rhel | centos | almalinux | rocky) os_dist="el";;
  debian) os_dist="deb"; [ -z "${os_ver}" ] && os_ver=9999;;
  fedora) os_dist="fc";;
esac

os_dist_ver="$os_dist$os_ver"

## ----------------------------------------------------------------------

program_name="${0##*/}"
if [ -n "$vendor_rpm_bootstrap" ]; then
  program_name="${program_name%.sh}"
  rpm_cmd="${rpmbuild_cmd%/*}/${program_name#vendor-}"
else
  rpm_cmd="${rpmbuild_cmd%/*}/${program_name#$vendor_id-}"
fi

case "$rpm_cmd" in
*/rpmbuild)
  wrapper_cmd="${VENDOR_RPM_RPMBUILD_WRAPPER_COMMAND-}"
  rpmbuild_b_opt=$(
    while [ $# -ge 1 ]; do
      case "$1" in
      -b[abpcils])
        echo "$1"
        break
        ;;
      --)
        break
        ;;
      esac
      shift
    done
  )
  if [ "$rpmbuild_b_opt" = "-bs" ]; then
    ## Do not include OS distribution and version in source RPM package filename
    os_dist=""
    if [ -z "$wrapper_cmd" ] && type fakeroot >/dev/null 2>&1; then
      ## Use fakeroot by default for rpmbuild -bs to make file owner in
      ## SRPM package being root
      wrapper_cmd="fakeroot"
    fi
  fi
  ;;
esac

## OS-specific RPM macros
## ----------------------------------------------------------------------

set -- \
  --define "$os_name $os_ver" \
  --define "$os_dist_ver 1" \
  ${os_dist:+--define "dist .$os_dist$os_ver"} \
  "$@" \
;

## Vendor-specific RPM macros
## ----------------------------------------------------------------------

rpm_macros="$("$rpmbuild_cmd" --showrc |sed -n 's/^Macro path: //p')"

## NOTE: The --rcfile or the --macros option must be specified as
##       the first argument for the rpmbuild command!
set -- \
  --macros "$rpm_macros:$rpm_vendor_macros" \
  "$@" \
;

## ----------------------------------------------------------------------

exec ${wrapper_cmd:+"$wrapper_cmd"} "$rpm_cmd" "$@"
