#!/bin/sh
# pin-recipes.sh <recipe.toml...> — Etapa G Fase 2 (sello inmutable): ancla en LOTE el `commit`
# de cada receta git, resolviendo tags flotantes → SHA vía `git ls-remote` (ADR 0006). Los tarball
# (ya anclados por sha256) y las que ya tienen SHA se saltean. El laboratorio se vuelve determinista
# al estilo Nix: cada origen queda fijado a un punto inmutable de la historia.
#
# Ej:  scripts/pin-recipes.sh recipes/*.toml      |     find recipes -name '*.toml' | xargs scripts/pin-recipes.sh
set -eu
HAMMER="${HAMMER:-cargo run -q -p hammer-cli --}"
[ "$#" -gt 0 ] || { echo "uso: pin-recipes.sh <recipe.toml...>" >&2; exit 1; }

pinned=0; skipped=0; failed=""
for r in "$@"; do
  if $HAMMER pin "$r" 2>&1 | grep -q '→'; then
    pinned=$((pinned + 1))
  elif $HAMMER pin "$r" >/dev/null 2>&1; then
    skipped=$((skipped + 1))   # ya anclado / tarball
  else
    failed="$failed $(basename "$r")"
  fi
done
echo "pin: $pinned anclados, $skipped salteados (ya-SHA/tarball).${failed:+ FALLARON:$failed}"
