#!/bin/bash

# Script per sincronizzare file .m da un server remoto a una directory locale
# e fare il commit delle modifiche in un repository Git locale.

REMOTE_USER="alex"
REMOTE_HOST="80.211.60.65"
REMOTE_PORT="2022"
REMOTE_SRC="/usr/local/matlab_func"
LOCAL_DST="/home/alex/devel/matlab-ase"
# ------------------------------------------------
# 1. Esecuzione di Rsync (Mirroring dal remoto al locale)
# Include: -a (archive), -v (verbose), -z (compress), --delete (mirroring)
# Filtri: include directory (*/), include solo *.m, esclude *mcrCache*, esclude tutto il resto (*)
echo "Inizio sincronizzazione da ${REMOTE_HOST}..."

rsync -avzm --delete -e "ssh -p ${REMOTE_PORT}" \
  --include='*/' \
  --include='*.m' \
  --exclude='*' \
  "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_SRC}" "${LOCAL_DST}"

# 2. Verifica se rsync è andato a buon fine
if [ $? -eq 0 ]; then
    echo "Sincronizzazione completata con successo."
else
    echo "Errore durante la sincronizzazione Rsync."
    exit 1
fi

# 3. Preparazione del messaggio di commit con la data attuale
SYNC_DATE=$(date +"%Y-%m-%d %H:%M:%S")
COMMIT_MSG="Sync from remote server: ${SYNC_DATE}"

# 4. Aggiungi SOLO i file .m modificati o nuovi all'area di staging
echo "Aggiungo SOLO i file .m al Git staging area..."

# Utilizza 'find' per trovare tutti i file .m in modo ricorsivo e li passa a 'git add'
find "${LOCAL_DST}" -type f -name "*.m" -print0 | xargs -0 git add

# 5. Esegui il commit con il messaggio datato
echo "Eseguo il commit con messaggio: \"${COMMIT_MSG}\""
git commit -m "${COMMIT_MSG}"

# 6. Verifica se il commit ha prodotto modifiche
if [ $? -eq 0 ]; then
    echo "Commit completato con successo."
else
    # Questo succede se non ci sono state modifiche (rsync non ha trovato nulla da aggiornare)
    echo "Nessuna modifica rilevata; commit saltato."
fi

echo "Processo completato."