#!/bin/dash # Variables de entrada (URL del repositorio y hash del commit como argumentos) REPO="${1:-https://gitlab.com/kernel-firmware/linux-firmware.git}" COMMIT_HASH="${2:-3981e21e654e3c139c7ca143a0119706b0e7f963}" # Variables de directorio temporal y nombre del archivo final TEMP_DIR=$(mktemp -d /tmp/repo-XXXX) ARCHIVE_NAME="repo-$(basename "$TEMP_DIR").tar.xz" # Clonar el repositorio en el directorio temporal git clone "$REPO" "$TEMP_DIR" || { echo "Error: No se pudo clonar el repositorio." exit 1 } # Cambiar al directorio clonado cd "$TEMP_DIR" || exit 1 # Cambiar al commit especificado git checkout "$COMMIT_HASH" || { echo "Error: No se pudo cambiar al commit $COMMIT_HASH." exit 1 } # Verificar si el repositorio contiene un directorio .git y moverlo if [ -d .git ]; then GIT_DIR="/tmp/git_$(basename "$TEMP_DIR")" mkdir "$GIT_DIR" && mv .git "$GIT_DIR" || exit 1 fi # Volver al directorio anterior y crear el archivo tar.xz cd - > /dev/null || exit 1 tar -cJvf "$ARCHIVE_NAME" -C "$(dirname "$TEMP_DIR")" "$(basename "$TEMP_DIR")" || { echo "Error: No se pudo crear el archivo $ARCHIVE_NAME." exit 1 } # Limpiar el directorio temporal rm -rf "$TEMP_DIR" echo "Archivo creado: $ARCHIVE_NAME"