#!/bin/sh
################################################################################################
## 
##  Nom: compile_latex 
##
##  Licence: Creative Commons
##
##  Comportement: Compilation d'un fichier tex, suppression des fichiers temp et affichage du pdf
##
##
##
################################################################################################
##
##  Date de création: 26/01/2011
##
##  Auteur: Gardouille
##
##
##  Dernière modifications:
##  27/01/2011: - Ajout de la possibilité de choisir entre supprimer/déplacer fichiers temp
##
# **********************************************************************************************
##  Modifications à apporter:
##              - Faire une gestion en fonction du nombre d'argument
##              - Découper le programme principal en différentes fonctions
##              - 
# **********************************************************************************************
##
##
##
################################################################################################



# **********************************************************************************************
# 
# Variables globales
# 
# ----------------------------------------------------------- 
# Variable qui permet d'indiquer si il faut supprimer les fichiers temporaires
# 0 = suppression
rm_file="0"

# Variable qui permet d'indiquer si il faut déplacer les fichiers temporaires dans un sous dossier au nom du fichier à compiler
# 0 = déplacer
mv_file="1"

# Fin des variables globales
# -----------------------------------------------------------
# **********************************************************************************************


# **********************************************************************************************
# 
# Fichiers globaux
# 
# -----------------------------------------------------------
# 
log="`pwd`/compile.log"
# Fin des fichierss globaux
# -----------------------------------------------------------
# **********************************************************************************************


# **********************************************************************************************
# 
# Fonctions globales
# 
# -----------------------------------------------------------
# Divers echos ...
echoi() { echo " (ii) $*" >> "${log}" ; }
echok() { echo " (ok) $*" >> "${log}" ; }
echow() { echo " (!!) $*" >> "${log}" ; }
echnk() { echo " (EE) $*" >> "${log}" ; }

# Fin des fonctions globales
# -----------------------------------------------------------
# **********************************************************************************************



# **********************************************************************************************
# 
# Programme principale
# 
# -----------------------------------------------------------

# Suppression du fichier de log si présent:
[ -f "${log}" ] && rm -f "${log}"                                                                                                                                       

case "$1" in # gestion du premier argument
  *.tex ) # Si le premier argument est bien un fichier .tex
    # On vérifie que le fichier existe bien:
    [ ! -f "$1" ] && echo "Erreur, le fichier passé en paramètre n'existe pas. Vérifier son orthographe et son emplacement, merci." && exit 1
    # On récupère le nom du fichier:
    file=`echo "$1" | sed -e "s/.tex//g"`

    # On compile le document en pdf en rediregeant la sortie standart et les erreurs vers le fichier de log
    pdflatex "$1" > "${log}" 2>> "${log}"
    if [ $? -eq "0" ] # Si la compilation s'est bien déroulée
    then
      echo "Compilation terminée sans erreur"
    else
      echo "Il y a eu un problème lors de la compilation, veuillez prendre note du fichier de log: ${log}"
      echo "Il y a également les fichiers crées pendant la compilation qui pourront vous aider."
      exit 2
    fi

    if [ ${rm_file} -eq "0" ] # Si il faut supprimer les fichiers temp
    then
      # Suppression des fichiers temporaires crées pour la compilation:
      rm -rf "${file}".aux "${file}".log >> "${log}" 2>> "${log}"
    elif [ ${mv_file} -eq "0" ] # Si il faut déplacer les fichiers temp
    then
      # Nouveau dossier au nom du fichier à compiler
      mkdir "${file}"
      # Déplacer les fichiers temporaires
      mv "${file}".aux "${file}".log "${file}"/
    fi

    # Affichage du pdf:
    evince "${file}".pdf &

    echo "good"
    exit 0
    ;;
  h|help ) # Si une l'aide est demandée
    echo "Aide en cours de rédac =)"
    exit 0
    ;;
  * ) # Sinon
    echo "Erreur. Utilisation:"
    echo "compile_latex fichier.tex"
    exit 1
    ;;
esac

exit 0

# Fin de la boucle principale
# -----------------------------------------------------------
# **********************************************************************************************