#!/usr/bin/env bash
# Guarda el sistema de archivos limpio de cada imagen como tar.gz verificable.
set -euo pipefail

aqui=$(cd "$(dirname "$0")" && pwd)
salida="$aqui/salida/entornos-limpios"
mkdir -p "$salida"

entornos=(ubuntu-viejo debian-viejo fedora-viejo suse-viejo arch-viejo ubuntu-actual debian-actual fedora-actual suse-actual arch-actual)
if (($#)); then entornos=("$@"); fi
for entorno in "${entornos[@]}"; do
  case $entorno in
    ubuntu-viejo|debian-viejo|fedora-viejo|suse-viejo|arch-viejo|ubuntu-actual|debian-actual|fedora-actual|suse-actual|arch-actual) ;;
    *) echo "Entorno desconocido: $entorno" >&2; exit 2 ;;
  esac
  imagen="localhost/simusol-$entorno:base"
  archivo="$salida/$entorno.tar.gz"
  temporal="$archivo.tmp"
  podman image exists "$imagen" || { echo "Falta $imagen" >&2; exit 1; }
  if [[ -e $archivo ]]; then
    gzip -t "$archivo" || { echo "Archivo existente dañado; no se reemplaza: $archivo" >&2; exit 1; }
    echo "Ya existe y es legible; no se modifica: $archivo"
    sha256sum "$archivo"
    continue
  fi
  [[ ! -e $temporal ]] || { echo "Temporal existente; revisar antes de continuar: $temporal" >&2; exit 1; }
  contenedor=$(podman create "$imagen")
  if ! podman export "$contenedor" | gzip -1 > "$temporal"; then
    podman rm "$contenedor" >/dev/null
    exit 1
  fi
  podman rm "$contenedor" >/dev/null
  mv "$temporal" "$archivo"
  gzip -t "$archivo"
  sha256sum "$archivo"
done
