#!/usr/bin/ksh
set +x
# ENTREPRISE
# Objet       : Purge Logs
# Auteur      : MBE
# Fait le     : JJ/MM/AAAA
# Demandé par : ___
  APPLICATION="___"
  DESCRIPTION_SCRIPT="Purge Logs $APPLICATION"
  NOM_SCRIPT="Purgelogs_$APPLICATION"
  Fic_Log="./"$NOM_SCRIPT".log"
  REP_Travail="/___/"
#------------------------------------------------------------------------
#----------------------------------------------
#    -------------------------------------
# --| Définition des Fonctions de Base -- |
#    -------------------------------------
controle_code_retour(){
  #echo $ETAPE " - Code Retour : "$MaxRet # DECOMMENTER POUR MODE DEBUG
  if (( $MaxRet != 0 ))
  then
    echo $ETAPE " - Code Retour : "$MaxRet # COMMENTER POUR MODE DEBUG
    exit $MaxRet
  fi
}
# -----------------------------------------
initialisation_SCRIPT(){
  ETAPE="INITIALISATION DU SCRIPT"
  (( MaxRet = 0 ))
  controle_code_retour
  DATE_DEBUT=$(date +%d"-"%m"-"%Y"_"%H"."%M"."%S)
  echo "------------------------------"
  echo "Debut de traitement : "$DATE_DEBUT
  echo "------------------------------"
  echo $DESCRIPTION_SCRIPT
  echo "------------------------------"
}
# -----------------------------------------
sortie_SCRIPT(){
  ETAPE="FIN DU SCRIPT"
  DATE_FIN=$(date +%d"-"%m"-"%Y"_"%H"."%M"."%S)
  echo "------------------------------"
  echo "Fin de traitement : "$DATE_FIN
  echo "------------------------------"
  controle_code_retour
  exit $MaxRet
}
# -----------------------------------------
show_etape(){
echo ""
echo "---------------------------------------------------------------------"
echo " " $ETAPE
echo "---------------------------------------------------------------------"
echo ""
}
#----------------------------------------------
#    -------------------------------------
# --| Définition Fonctions et Procédures  |
#    -------------------------------------

spinner()
{
    pid=$1
    delay=0.5
    spinstr='|/-\'
    while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
        temp=${spinstr#?}
        printf " [%c]  " "$spinstr"
        spinstr=$temp${spinstr%"$temp"}
        sleep $delay
        printf "\b\b\b\b\b\b"
    done
    printf "    \b\b\b\b"
}

waitbar()
{
    pid_wb=$1
    delay_wb=0.5
    while [ "$(ps a | awk '{print $1}' | grep $pid_wb)" ]; do
        echo -n "."
        sleep $delay_wb
    done
}

countbar()
{
    pid_count=$1
    echo "NOMBRE DE FICHIERS TROUVES : "
    delay_count=1
    while [ "$(ps a | awk '{print $1}' | grep $pid_count)" ]; do
       nblignes=$(wc -l $Fic_Log | awk '{print $1}')
       printf "\r%-${15}s" "$nblignes"
        sleep $delay_count
    done
    nblignes=$(wc -l $Fic_Log | awk '{print $1}')
    printf "\r%-${15}s" "$nblignes"
}


#----------------------------------------------
initialisation_SCRIPT
#-------------------------------------------------
set +x
#    -------------------------------------
# --| Définition des variables ---------- |
#    -------------------------------------
AgeMax=28
#--------------------------------------------------
#------------------\_[MAIN]_/--------------------- \
ETAPE=$DESCRIPTION_SCRIPT
show_etape
#----------------------------------------------
ETAPE="Etat du FS - $REP_Travail - avant suppression"
show_etape
df -k $REP_Travail

ETAPE="Liste des fichiers vieux de plus de $AgeMax jours"
show_etape
(find $REP_Travail -maxdepth 3 -type f -mtime +$AgeMax -exec echo {} \; > $Fic_Log) &
countbar $!
#spinner $!

echo
echo "Afficher la liste des fichiers ? (O/N)"
read reponse

if [[ $reponse = "O" || $reponse = "o" ]]
then
  cat $Fic_Log
fi


ETAPE="Suppression des fichiers"
show_etape
echo
echo "Supprimer les fichiers ? (O/N)"
read reponse

if [[ $reponse = "O" || $reponse = "o" ]]
then
  echo "Suppression en cours"
  find $REP_Travail -maxdepth 3 -type f -mtime +$AgeMax -exec rm -f {} \;
  (( MaxRet = $MaxRet + $? ))
  controle_code_retour
  if (( $MaxRet==0 ))
  then
    echo "Suppression terminee"
  else
    echo "Suppression echouee"
  fi
else
  echo "Suppression annulee"
fi

ETAPE="Etat du FS - $REP_Travail - apres suppression"
show_etape
df -k $REP_Travail

#----------------------------------------------
(( MaxRet = $MaxRet + $? ))
controle_code_retour
#------------------------------------------------- /
#--------------------------------------------------
sortie_SCRIPT