#!/usr/bin/env bash
# Paketiert ein Release aus einem vorhandenen Tag.
#
# Auf Windows-Buildmaschinen ist -c core.autocrlf=false zwingend -- sonst landen
# CRLF-Zeilenenden im Tarball und die Shell-Skripte scheitern auf dem Ziel mit
# "bad interpreter". Das ist real passiert.
#
# Der Name kommt aus dem Repository, nicht aus einer festen Zeichenkette: die
# beiden Anwendungen liegen in getrennten Repositorien, und ein
# Lizenzserver-Release, das "tesm-..." heisst, verwechselt man genau einmal.
set -euo pipefail

TAG="${1:?Verwendung: release.sh vX.Y.Z [name]}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"

# Vorgabe: der Name der einzigen Anwendung im Baum, sonst der Verzeichnisname.
if [[ -n "${2:-}" ]]; then
  NAME="$2"
else
  mapfile -t APPS < <(ls -1 "$REPO_DIR/apps" 2>/dev/null || true)
  if [[ ${#APPS[@]} -eq 1 ]]; then NAME="${APPS[0]}"; else NAME="$(basename "$REPO_DIR")"; fi
fi

OUT="$NAME-$TAG.tar.gz"
git -c core.autocrlf=false -C "$REPO_DIR" archive     --format=tar.gz --prefix="$NAME/" -o "$OUT" "$TAG"
echo "Erzeugt: $OUT"
file "$OUT"
echo "Pruefsumme:"; sha256sum "$OUT"
