#!/bin/sh

set -u

vendor_id="${VENDOR_RPM_VENDOR_ID:-osstech}"
vendor_rpmbuild_cmd="${VENDOR_RPM_VENDOR_RPMBUILD_COMMAND-/opt/osstech/bin/$vendor_id-rpmbuild}"
vendor_rpmbuild_home="${VENDOR_RPM_VENDOR_RPMBUILD_HOME-}"

topdir=$(pwd)
builddir="$topdir/BUILD/$(hostname |sed 's/\..*//')"
buildrootdir="$builddir"
buildroot="$builddir/root"
tmppath="$builddir/tmp"

packager="$(id -un) $topdir"
if type git > /dev/null 2>&1; then
  packager="$packager $(git rev-parse --abbrev-ref HEAD) $(git rev-parse HEAD)"
  git_toplevel=$(git rev-parse --show-toplevel)
  git_status=$(
    git status --porcelain -- */ \
    |while IFS= read -r line; do
      path="${line#?? }"
      case "$path" in
      */SOURCES/*)
	[ -L "$git_toplevel/$path" ] && continue
	;;
      */SPECS/*)
	;;
      *)
	continue
	;;
      esac
      echo "$line"
    done
  )
  if [ -n "$git_status" ]; then
    ## Work In Progress
    packager="$packager WIP"
  fi
fi

if \
  systemd-detect-virt --quiet --container 2>/dev/null \
  || ( \
    [ -r /proc/self/uid_map ] \
    && IFS=' ' read -r _ root_uid_mapped _ < /proc/self/uid_map \
    && [ "$root_uid_mapped" -ne 0 ] \
    ;
  ) \
  || [ -r /run/host/container-manager ] \
  || [ -r /run/.containerenv ] \
  || [ -r /.dockerenv ] \
  || [ -r /var/run/secrets/kubernetes.io/serviceaccount/token ] \
  || grep -E -q 'lxc|docker|containerd' /proc/1/cgroup \
; then
  export CONTAINER="${container:-true}"
else
  export HOME="${vendor_rpmbuild_home:-$builddir}"
fi

mkdir -p "$tmppath" || exit 1

exec "$vendor_rpmbuild_cmd" \
  --noclean \
  --define "_topdir $topdir" \
  --define "_builddir $builddir" \
  --define "_buildrootdir $buildrootdir" \
  --define "buildroot $buildroot" \
  --define "_tmppath $tmppath" \
  --define "packager $packager" \
  "$@" \
;
