#!/bin/sh # pin-recipes.sh — 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 " >&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}"