Auto-éditer un wikilivre/Auto-référencer/sclipco.sh
Apparence
#! /bin/bash
# Fichier : sclipco.sh
VERSION=210125
#P Nom du fichier de commandes : sclipco
#P Syntaxe : "ajouter_sclipco <nom du livre>"
#P Exemple : "./ajouter_sclpco LivreTest" à la console.
#P Date de création : 16 mai 2020
#P Modifié le : 18 mai 2020 par GC
#P Modifié le : 20 mai 2020 par GC lignes 25 à 37 'Retour' de ajouter_sclip.
#P Modifié le : 30 mai 2020 par CG pour l'installation automatique du module.
#P Modifié le : 4 juin 2020 par GC mise à jour des liens d'exécution.
#P Version de la documentation sur WikiLivres le : 20 mai 2020
#P## Une version 'commons' est possible en co-édition avec la commande
#P## 'ajouter_sclic'.
#P## Les images, sources, licences, auteurs sont copiés dans les
#P## sous-répertoires respectifs depuis le sous-répertoire du livre.
#P## Les noms des images de 'commons' commencent par 'File:' alors qu'en
#P## version wikibooks les noms des images commencent par 'Fichier:'
#P## Dans l'exemple 'LivreTest' :
#P## cd $Projet/ArticleUn; ls Fichier*.html Fichier*.html.* | sed s/Fichier:/File:/g > ArticleUn.commonshtmlpict
#P## while read pict; do cp $Projet/$1/$pict .; done < ArticleUn.commonshtmlpict
#P## Il suffit de construire la page LivreTest.sclip à partir des fichiers :
#P## *.title, *.source, *.license, *.auteur
#P
if [ $0=sclipco ]; then echo "sclipco : Version "$VERSION; fi
#O inclure dans bin : ajouter_sclip.inc ou, dans src/* ajouter_sclip.inc.sh
source ajouter_sclip.inc
Retour=$?
#T echo "Code de retour de la commande ajouter_sclip : " $Retour
#O si le code de retour est différent de '0'
if [ $Retour -gt '0' ] && [ $Personal = "true" ];
#O alors afficher le nom du module de commande en erreur et quitter 'annexer'
#O avec retour à 1
then
echo "Erreur au module shell 'ajouter_sclip'"
exit 1
#O fin si
fi
echo "fichier cible : "$PageScliP
echo "------"
#T exit
#O tant que l'on peut lire les lignes du fichier $Projet/$1.pj
while read pjline
do
#O si la ligne lue n'est pas $1 (nom du livre)
#T echo "ligne lue : " $line
if [ $pjline != $1 ]
#O alors:
then
#T echo "ligne prise en compte : " $pjline
#O entrer dans le répertore de l'article,
cd $Projet/$pjline
#O lister les 'Fichier*.html' et Fichier*.html.* dans le fichier
#O $pjline.commonshtmlpict
ls Fichier*.html Fichier*.html.* | sed s/Fichier:/File:/g > $pjline.commonshtmlpict
#O copier les fichiers Fichier*.html Fichier*.html.* du répertoire
#O $Projet/$1
while read pict; do cp $Projet/$1/$pict .; done < $pjline.commonshtmlpict
#O copier le nom de l'article dans $1.sclip
echo "'''Article : $pjline'''<br \>" >> $PageScliP
echo "'''Article : $pjline'''"
#P## Annexe version 'commons' ##############################
#O sélectionner les images de chaque articles dans Article/htmlcommons.list
#O exclure .title|.source|.license|.auteur|.str|.tmp
cat $pjline.commonshtmlpict | grep -v -E ".title|.source|.license|.auteur|.str|.tmp" > htmlcommons.list
#T cat htmlcommons.list
#O tant qu'il y a des lignes d'images dans le fichier htmlcommons.list
while read htmlcommonsline
do
#O images,
cat $htmlcommonsline.title >> $PageScliP
cat $htmlcommonsline.title
#O source,
cat $htmlcommonsline.source >> $PageScliP
cat $htmlcommonsline.source
#O license,
cat $htmlcommonsline.license >> $PageScliP
cat $htmlcommonsline.license
#O auteur(s).
cat $htmlcommonsline.auteur >> $PageScliP
cat $htmlcommonsline.auteur
#O terminer la page $P$PageScliP
echo "" >> $PageScliP
#O fin du tant qu'il y a des lignes d'images
done < htmlcommons.list
#O fin du 'si la ligne n'est pas le nom du livre'.
fi
#O fin du tq .pj
done < $Projet/$1.pj
#O terminer la page $PageScliP
echo "</div>" >> $PageScliP
echo "{{Nouvelle page imprimée}}" >> $PageScliP
exit 0
# Fin de sclipco.sh