#!/bin/sh
# Builds one or more Angular MFE projects, keeping stdout to one line per
# module so parallel Docker build stages don't interleave into noise.
# Full `ng build` output is captured per-module; on failure only the failing
# module's log is printed (last 100 lines) instead of the whole group's output.
#
# Usage: dockerbuild-mfe.sh <GROUP_LABEL> <module1> [module2 ...]
set -e

GROUP="$1"
shift

LOG_DIR="/tmp/build-logs"
mkdir -p "$LOG_DIR"

TOTAL=$#
echo ""
echo "========================================================================"
echo "  ${GROUP} — ${TOTAL} module(s): $*"
echo "========================================================================"

GROUP_START=$(date +%s)
INDEX=0

for MODULE in "$@"; do
  INDEX=$((INDEX + 1))
  LOG_FILE="${LOG_DIR}/${MODULE}.log"
  MOD_START=$(date +%s)

  printf '[%s] (%s/%s) %-24s ... ' "$GROUP" "$INDEX" "$TOTAL" "$MODULE"

  if ng build "$MODULE" --no-ssr > "$LOG_FILE" 2>&1; then
    MOD_END=$(date +%s)
    echo "OK  ($((MOD_END - MOD_START))s)"
  else
    MOD_END=$(date +%s)
    echo "FAILED after $((MOD_END - MOD_START))s"
    echo ""
    echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    echo ">>> BUILD FAILED: ${GROUP} / ${MODULE}"
    echo ">>> Last 100 lines of ng build output for '${MODULE}':"
    echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    tail -n 100 "$LOG_FILE"
    echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    echo ">>> END OF FAILURE LOG (${GROUP} / ${MODULE})"
    echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    exit 1
  fi
done

GROUP_END=$(date +%s)
echo "------------------------------------------------------------------------"
echo "  ${GROUP} COMPLETE — ${TOTAL} module(s) in $((GROUP_END - GROUP_START))s"
echo "------------------------------------------------------------------------"
