#! /bin/sh # # GenRap4.sh - 26/09/2006- Edouard.Thiel@lim.univ-mrs.fr # # Gestion des rapports de recherche # # Configuration du script NomScript="GenRap4.sh" UrlLabo="http://www.lif.univ-mrs.fr" UrlRapp="http://www.lif-sud.univ-mrs.fr/Rapports" UrlSemi="http://www.lif-sud.univ-mrs.fr/Semi" CssLabo="$UrlRapp/variante.css" CssRapp="$UrlRapp/rapp.css" IconLabo1="$UrlLabo/images/lif.ico" IconLabo2="$UrlLabo/images/lif.ico" NomLabo="Laboratoire d'Informatique Fondamentale de Marseille" NomCourtLabo="LIF" # DirecteurLabo="Bruno Durand" DirecteurLabo="Paul Sabatier" SecretaireLabo="Martine Quessada" MailSecretaireLabo="Martine.Quessada@cmi.univ-mrs.fr" TelSecretaireLabo="04 91 11 36 00" FaxSecretaireLabo="04 91 11 36 02" MailWebmasterLabo="kai@lif.univ-mrs.fr" MailResp="Edouard.Thiel@lif.univ-mrs.fr" NomResp="Edouard Thiel" DateDuJour=`date "+%d %B %Y"` LRapTriee=".lraptriee" # Option pour memoriser l'emplacement des fonctions. set -h #------------------------------------------------------------------------------ # Commandes utiles #------------------------------------------------------------------------------ # Affiche le texte du champ LABEL dans fich.rap # # Usage : EchoDB fich.rap LABEL EchoDB () { sed -n "/<$2>/,/<\/$2>/p" "$1" | \ sed -e "/<\/\?$2>/d" } # Réussi si le texte du champ LABEL est non vide # # Usage : testDB fich.rap LABEL NonVideDB () { test -n "`EchoDB $1 $2`" } # Affiche seulement si le texte du champ LABEL est non vide # # Usage : AffiTestDB fich.rap "text1" LABEL "text2" AffiTestDB () { if NonVideDB "$1" "$3" ; then echo -n "$2`EchoDB $1 $3`$4" fi } # Filtre : détecte fins de paragraphes et rajoute

# # Usage : com1 | FiltreFinPar | com2 FiltreFinPar () { echo "

" sed -e ":a; /^$/N; s/^\n$//; ta;" | sed -e "s/^$/<\/p>

/" echo "

" } # Détruit et recrée le fichier # # Usage : Recree fich ReCree () { if [ -f "$1" ]; then rm -f "$1" fi echo "Création de $1 ..." touch "$1" } # Réussi si le fichier existe # # Usage : TestFi fich TestFi () { if [ ! -f "$1" ]; then echo "Erreur, fichier $1 absent" exit 1 fi } # Réussi si le fichier a l'extension .rap # # TestExtDB fich.rap fich TestExtDB () { if [ "$1" != "$2.rap" ]; then echo "Erreur, extension .rap attendue" exit 1 fi } # Réussi si le nombre d'arguments est suffisant # # Usage : TestArgc $# n TestArgc () { if [ "$1" -lt "$2" ]; then echo "Erreur, nombre d'arguments insuffisant" exit 1 fi } # Lit une ligne et la mémorise dans $ANS # # Usage : Readln prompt default Readln () { echo -n "$1 [$2] = " read ANS " >> $2 if [ -n "$ANS" ]; then echo "$ANS" >> $2 ; fi echo "" >> $2 echo "" >> $2 } # Affiche la taille en k # # Usage : AffiTaille fich AffiTaille () { if [ -f "$1" ]; then ls -sk "$1" | (read a b ; echo $a) else echo 0 fi } # Affiche le numéro destiné au tri # # Usage : AffiNumPourTri fich.rap AffiNumPourTri () { EchoDB "$1" NUMERO | ( IFS="-" ; read a b ; expr $b \* 1000000 + $a) } #------------------------------------------------------------------------------ # Création ou édition d'un fichier .rap # # Usage : SaisieDB fich #------------------------------------------------------------------------------ SaisieDB () { rap="$1.rap" if [ -f "$rap" ]; then mv -f "$rap" "$rap.old" # Si le script est interrompu, on retabli $rap.old trap "mv -f "$rap.old" "$rap" ; exit 1" 1 2 D="$rap.old" else D="" fi ReCree "$rap" EditLigneDB "$D" "$rap" "AUTEURS" "Auteurs" "" EditLigneDB "$D" "$rap" "ANNEE" "Année" "" EditLigneDB "$D" "$rap" "MOIS" "Mois" "" EditLigneDB "$D" "$rap" "NUMERO" "Numéro" "" EditLigneDB "$D" "$rap" "TITRE" "Titre" "" EditLigneDB "$D" "$rap" "RESUME-UK" "Résumé UK" "" EditLigneDB "$D" "$rap" "MOTCLE-UK" "Mots clés UK" "" EditLigneDB "$D" "$rap" "RESUME-FR" "Résumé FR" "" EditLigneDB "$D" "$rap" "MOTCLE-FR" "Mots clés FR" "" } #------------------------------------------------------------------------------ # Entete général des pages # # Usage : DoTheEntete titrehead titrepage #------------------------------------------------------------------------------ DoTheEntete () { titrehead="$1" titrepage="$2" cat << FINCAT $titrehead
Recherche
$NomLabo

$titrepage


FINCAT } #------------------------------------------------------------------------------ # Fin générale des pages # # Usage : DoTheFin #------------------------------------------------------------------------------ DoTheFin () { cat << FINCAT

[css]   [GenRap] [xhtml] Direction : $DirecteurLabo - Secrétariat de direction : $SecretaireLabo
Tel. $TelSecretaireLabo - Fax : $FaxSecretaireLabo - Mel. $MailSecretaireLabo

webmaster - La dernière mise à jour de cette page date du $DateDuJour
FINCAT } #------------------------------------------------------------------------------ # Génération de la référence bibtex d'un rapport # # Usage : GenBibtex fich #------------------------------------------------------------------------------ GenBibtex () { rap="$1.rap" res="$1.bib" ReCree "$res" cat >> "$res" << FINCAT @TECHREPORT{$1, AUTHOR = {`EchoDB "$rap" AUTEURS`}, TITLE = {{`EchoDB "$rap" TITRE`}}, INSTITUTION = {{LIF}}, ADDRESS = {Marseille, France}, TYPE = {Research report}, NUMBER = {`EchoDB "$rap" NUMERO`}, MONTH = {`EchoDB "$rap" MOIS`}, YEAR = {`EchoDB "$rap" ANNEE`}, NOTE = {$UrlRapp/$1.html}, } FINCAT } #------------------------------------------------------------------------------ # Génération du paragraphe html qui sera inséré dans la liste des rapports # # Usage : GenParagHtml fich #------------------------------------------------------------------------------ GenParagHtml () { rap="$1.rap" res=".$1.parhtm" ReCree "$res" cat >> "$res" << FINCAT
`EchoDB "$rap" NUMERO`    `EchoDB "$rap" AUTEURS`
`EchoDB "$rap" TITRE`
 
FINCAT } #------------------------------------------------------------------------------ # Génération du résumé html d'un rapport # # Usage : GenResume fich #------------------------------------------------------------------------------ GenResume () { rap="$1.rap" res="$1.html" bib="$1.bib" numero=`EchoDB "$rap" NUMERO` ReCree "$res" cat >> "$res" << FINCAT `DoTheEntete "$NomCourtLabo - Rapport $numero" "Résumé de rapport du $NomCourtLabo"`

Rapport `EchoDB "$rap" NUMERO`
`EchoDB "$rap" AUTEURS`
`EchoDB "$rap" TITRE`


Téléchargement / Download : FINCAT if [ -f "$1.pdf" ]; then echo "pdf `AffiTaille "$1.pdf"`k , " >> "$res" fi if [ -f "$1.ps.gz" ]; then echo "ps.gz `AffiTaille "$1.ps.gz"`k , " >> "$res" fi cat >> "$res" << FINCAT bibtex

Abstract

`EchoDB "$rap" RESUME-UK | FiltreFinPar`

Keywords

`EchoDB "$rap" MOTCLE-UK`

Résumé

`EchoDB "$rap" RESUME-FR | FiltreFinPar`

Mots clés

`EchoDB "$rap" MOTCLE-FR`

Bibtex

`cat "$bib"`
`DoTheFin` FINCAT } #------------------------------------------------------------------------------ # Génération de la liste triée sur le numéro des .rap # # Usage : TriNumListRap #------------------------------------------------------------------------------ TriNumListRap () { ReCree $LRapTriee for i in *.rap ; do echo "`AffiNumPourTri $i` $i" done | \ sort -r -o $LRapTriee } #------------------------------------------------------------------------------ # Génération de la page des rapports # # Usage : MajPageRap fich #------------------------------------------------------------------------------ MajPageRap () { res="$1" TestFi $LRapTriee ReCree "$res" cat >> "$res" << FINCAT `DoTheEntete "$NomCourtLabo - Rapports en ligne" "Rapports en ligne du $NomCourtLabo"`
Cliquez sur le numéro de rapport pour voir le résumé et télécharger le rapport complet.
Click on report number to view abstract and download full report.

FINCAT cat $LRapTriee | while read cle nom ; do cat ."`basename "$nom" .rap`.parhtm" echo "" done >> "$res" cat >> "$res" << FINCAT
`DoTheFin` FINCAT } #------------------------------------------------------------------------------ # Usage : AffiUsage #------------------------------------------------------------------------------ AffiUsage () { echo "USAGE: $0 " echo " --help affiche cette aide" echo " --clean nettoie le répertoire" echo " --saisie fich.rap crée ou modifie fich.rap" echo " --genbib fich.rap génère le bibtex" echo " --genparhtm fich.rap génère le paragraphe html" echo " --genresu fich.rap génère le résumé" echo " --genall fich.rap génère tout pour fich.rap" echo " --genallrap génère tout pour tous les .rap" echo " --trinum tri les rapports sur leur numéro" echo " --majprinc met à jour la page principale" echo " --majall fait le tri et met tout à jour" echo " --pub fich.rap mise à jour du serveur" echo " --puball mise à jour générale du serveur" } #------------------------------------------------------------------------------ # D E B U T D U S C R I P T #------------------------------------------------------------------------------ if [ $# -lt 1 ]; then AffiUsage exit 1 fi # Décodage de la ligne de commande while [ $# -ge 1 ]; do case "$1" in '--help') AffiUsage exit 1 ;; '--clean') rm -f $LRapTriee for i in *.rap ; do F=`basename "$i" .rap` rm -f "$F.html" ".$F.parhtm" "$F.bib" done shift 1 ;; '--saisie') TestArgc $# 2 ; F=`basename "$2" .rap` TestExtDB "$2" "$F" SaisieDB "$F" shift 2 ;; '--genbib') TestArgc $# 2 ; F=`basename "$2" .rap` TestExtDB "$2" "$F" ; TestFi "$2" GenBibtex "$F" shift 2 ;; '--genparhtm') TestArgc $# 2 ; F=`basename "$2" .rap` TestExtDB "$2" "$F" ; TestFi "$2" GenParagHtml "$F" shift 2 ;; '--genresu') TestArgc $# 2 ; F=`basename "$2" .rap` TestExtDB "$2" "$F" ; TestFi "$2" GenResume "$F" shift 2 ;; '--genall') TestArgc $# 2 ; F=`basename "$2" .rap` TestExtDB "$2" "$F" ; TestFi "$2" GenBibtex "$F" GenParagHtml "$F" GenResume "$F" shift 2 ;; '--genallrap') for i in *.rap ; do F=`basename "$i" .rap` GenBibtex "$F" GenParagHtml "$F" GenResume "$F" done shift 1 ;; '--trinum') TriNumListRap shift 1 ;; '--majprinc') MajPageRap "index.html" shift 1 ;; '--majall') TriNumListRap MajPageRap "index.html" shift 1 ;; # '--pub') # rsh -l weblif pyla ./update-rapp.sh # shift 1 # ;; '--pub') TestArgc $# 2 ; F=`basename "$2" .rap` TestExtDB "$2" "$F" ; TestFi "$2" scp index.html "$F".* \ web@saphir.lidil.univ-mrs.fr:public_html/Rapports shift 2 ;; '--puball') scp -r style rapp.css variante.css $NomScript \ *.rap *.bib *.html *.ps.gz *.pdf \ web@saphir.lidil.univ-mrs.fr:public_html/Rapports shift 1 ;; *) echo "Erreur de syntaxe : $1" echo "Pour avoir de l'aide tapez : $0 --help" exit 1 ;; esac done # Fin succès exit 0