#!/bin/bash -e

#
# serviceRemoteDirectoryCleaner.sh
#
# Rimuove, qualora necessario, la directory remota di backup meno
# recente tra quelle directory remota di servizio
#

# Importa la definizione delle utilities di interesse generale
source $scriptsForBackupLocation/utilities.sh

# Importa la definizione dei messaggi di log
source $scriptsForBackupLocation/logMessages.sh

#
# Parametri
#
# remoteServiceDirCredentials:
#               credenziali di accesso alla directory remota di servizio
# remoteServiceDirPath:
#               path della directory remota di servizio
# maxNoOfBackups:
#               max numero di backup nella cartella remota di servizio
# localServiceBufferPath:
#               path del buffer locale di servizio
# logFileName:  nome del file di log all'interno del buffer locale di
#               servizio

# Controllo sul numero dei parametri
checkParams $# 5 "$(dateTime) $msgIncorrectParameterNumber \
                                         <remoteServiceDirCredentials> \
                                         <remoteServiceDirPath> \
                                         <maxNoOfBackups> \
                                         <localServiceBufferPath> \
                                         <logFileName>"
            
# Variabili mnemoniche per i parametri                                        
remoteServiceDirCredentials=$1
remoteServiceDirPath=$2			
maxNoOfBackups=$3
localServiceBufferPath=$4
logFileName=$5

# Traccia l'ingresso nello script
appendToLog "$(dateTime) $msgIntoTheScript" \
                         "$localServiceBufferPath/$logFileName"

# Conta il numero di directory remote di backup all'interno della 
# directory remota di servizio
noOfBackups=$(ssh $remoteServiceDirCredentials "ls -1 $remoteServiceDirPath | wc -l")

# Se tale numero è maggiore del massimo consentito
if test $noOfBackups -gt $maxNoOfBackups
then
                         
# Recupera il nome della directory remota di backup meno recente
# all'interno della directory remota di servizio
oldestRemoteServiceDirName=$(ssh $remoteServiceDirCredentials "ls -1 $remoteServiceDirPath | head -n 1")
   
# Cancella dalla directory remota di servizio la directory remota di
# backup meno recente
ssh $remoteServiceDirCredentials "rm -rf $remoteServiceDirPath/$oldestRemoteServiceDirName"

# Traccia la rimozione dalla directory remota di servizio
# della directory remota di backup meno recente
appendToLog "$(dateTime) $msgMaxNroOfBackupsExceeded"\
                         "$localServiceBufferPath/$logFileName"

appendToLog "$(dateTime) $msgRemovedBackup $oldestRemoteServiceDirName"\
                         "$localServiceBufferPath/$logFileName"
fi
                        
# Traccia l'uscita dallo script
appendToLog "$(dateTime) $msgOutOfTheScript" \
                         "$localServiceBufferPath/$logFileName"
                         
exit






