Skip to content

Instantly share code, notes, and snippets.

@gunzip
Last active July 2, 2024 08:00
Show Gist options
  • Save gunzip/ca813c1c2d3e9a6537aef2679f5f3ccc to your computer and use it in GitHub Desktop.
Save gunzip/ca813c1c2d3e9a6537aef2679f5f3ccc to your computer and use it in GitHub Desktop.
#!/bin/bash
# Directory dei moduli
MODULES_DIR=".terraform/modules"
HASHES_FILE="tfmodules.lock.json"
# Scaricare i moduli
terraform init
# Funzione per calcolare l'hash di un modulo
calculate_hash() {
local module_path="$1"
tar -cf - "$module_path" | sha256sum | awk '{ print $1 }'
}
# Verificare se il file di hash esiste e creare uno vuoto se non esiste
if [ ! -f "$HASHES_FILE" ]; then
echo "{}" > "$HASHES_FILE"
fi
# Iterare su tutti i moduli scaricati
for module_path in "$MODULES_DIR"/*; do
if [ -d "$module_path" ]; then
module_name=$(basename "$module_path")
new_hash=$(calculate_hash "$module_path")
# Verificare l'hash precedente dal file JSON
previous_hash=$(jq -r --arg module "$module_name" '.[$module]' "$HASHES_FILE")
if [ "$previous_hash" == "null" ]; then
# Salvare il nuovo hash se non esiste un hash precedente
jq --arg module "$module_name" --arg hash "$new_hash" '.[$module] = $hash' "$HASHES_FILE" > tmp.$$.json && mv tmp.$$.json "$HASHES_FILE"
echo "Salvataggio del nuovo hash del modulo $module_name."
else
# Confrontare gli hash
if [ "$previous_hash" == "$new_hash" ]; then
echo "Il modulo $module_name non è cambiato."
else
echo "Il modulo $module_name è stato modificato!"
# Uscire con errore dopo aver registrato il messaggio
exit 1
fi
fi
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment