Auto-éditer un wikilivre/Auto-référencer/ajouter sclt.sh
Apparence
#! /bin/bash
# Fichier : ajouter_sclt.sh
VERSION=210125
#P Nom du fichier de commandes : ajouter_sclt
#P Syntaxe : "ajouter_sclt <nom du livre>"
#P Exemple : "./ajouter_sclt LivreTest" à la console.
#P Date de création : 12 avril 2020
#P Modifié le : par GC le 1er mai 2020
#P Modifié le : par GC pour l'installation automatique.
#P Version de la documentation sur WikiLivres le : 30 avril 2020
#P
#P LES FICHIERS DE COMMANDES
#P
#P## header.sh ##############
#P header.sh, a créé le répertoire des commandes si celui-ci ne préexistait pas
#P il a vérifié la validité ou invalidé de ligne de commande, initialisé
#P les variables $Projet, $Site, $SitePrefix, vérifié l'existence des
#P fichiers de liste "$Projet/$1".list et "$Projet/$1".prj, puis affiché le
#P contenu du répertoire de travail.
#P
#P## lister #################
#P lister a créé le fichier de liste $Projet/$1.list par l'extraction du fichie
#P fichier $Projet/$1.contenu, copie de la page "Contenus" de la version
#P imprimable du livre, ou du fichier $Projet/$1.compilé issu d'une
#P compilation destinée à la publication par PediaPress.
#P il crée aussi le fichier $Projet/$1.prj qui conserve l'ordre d'affichage
#P de la publication.
#P
#P## télécharger ############
#P la commande aura téléchargé toutes les page du livre et aura copié les pages
#P html dans des répertoires qui leurs sont dédiés pour y extraire toute la
#P documentation nécessaire à la création de la page "Annexe" du livre.
#w à ce stade, pour les tests; on dispose des répertoires de travail :
#w LivreTest, ArticleUn, ArticleDeux, ArticleTrois
#P qui contiennent chacun le fichier html de la page ou de l'article qui le
#P concerne.
#P L'ensemble de commandes aura créé les fichiers de listes :
#P $Projet/$1.dirs, $Projet/$1.list, $Projet/$1.mainPage, $Projet/$1.prj
#P
#D La commande ./ajouter-sclt <wikilivre> commence par créer la page
#D $Projet/$1.sclt comme elle apparaîtra dans la première partie de la page
#D "Annexe" du livre avec les titre en wikitexte et les sections :
#D Références: toutes celles qui n'ont pas été affichées dans les pages.
#D Contenus: liens établis vers la page du livre et les articles (sous-pages)
#D Source de l'édition: lien vers la page qui a permis de créer l' "Annexe".
#D Sources licences et contributeurs des articles: ne concerne que les
#D articles, les sous-pages.
#D
#O inclure le fichier d'entête header.sh
source header.inc
if [ $0=ajouter_sclt ]; then echo "ajouter_sclt : Version "$VERSION; fi
#O## ajouter_sclt ###########
PageSclt=$Projet/$1.sclt
echo $PageSclt
cd $Projet
#T exit 0
#O but final: créer la page "Annexe" avec les pages Projet.sclt et Projet.scli.
#O ---
#O créer la page PageSclt=$Projet/$1.sclt et afficher son contenu.
echo "créer la page "$PageSclt
echo "----------"
echo "= Annexe =" > $PageSclt
echo "" >> $PageSclt
#O ajouter la balise <references />
echo "== Références ==" >> $PageSclt
echo "<references />" >> $PageSclt
echo " " >> $PageSclt
echo "{{Nouvelle page imprimée}}" >> $PageSclt
#? (option) ajouter la liste créée avec la page "Contenus" de la version imprimable ou la page compilée ?
#O ajouter le lien vers : la page du livre imprimable, et vers les articles.
echo "== Contenus ==" >> $PageSclt
echo "<div style="font-zize:85%";>" >> $PageSclt
cat $Projet/$1".list" | tr ' ' '_' | tr '\n' '%' | sed "s/%/\n\n/g" >> $PageSclt
echo "</div>" >> $PageSclt
#0 ajouter lien vers la source de cette édition.
echo "=== Source de cette édition ===" >> $PageSclt
echo "<div style="font-zize:85%";>" >> $PageSclt
echo -n "https://" >> $PageSclt
cat $Projet/$1.mainPage |sed "s/\\\ /_/g" >> $PageSclt
#P autre version : cat $Projet/$1".list" | tr ' ' '_' | tr '\n' '%' | sed "s/%/%\n/g" | grep $1% | tr -d % >> $PageSclt
echo "</div>" >> $PageSclt
echo " " >> $PageSclt
echo "{{Nouvelle page imprimée}}" >> $PageSclt
#O créer la section 'Article', 'Source', 'licence', 'Contributeur(?)'
echo "== Sources licences et contributeurs des articles ==" >> $PageSclt
#O ajouter le texte : style PediaPress ou personnalisé.
#O Les ''sources'' listées pour chaque article fournissent des informations
#O de licence plus détaillées, y compris le statut des droits d'auteurs, les
#O détenteurs de ces droits et les conditions de licence.
echo "<span style="font-zize:85%";>Les ''sources'' listées pour chaque article fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.</span>" >> $PageSclt
#O ou, valider l'un ou l'autre de ces textes :
#O Les textes sont disponibles avec leurs licences respectives, cependant
#O d’autres termes peuvent s’appliquer.<br />
#O Voyez les termes d’utilisation pour plus de détails :<br />
#O https://wikimediafoundation.org/wiki/Conditions_d'utilisation
# echo "<span style="font-zize:85%";>Les textes sont disponibles avec leurs licences respectives, cependant d’autres termes peuvent s’appliquer.<br />Voyez les termes d’utilisation pour plus de détails :<br />https://wikimediafoundation.org/wiki/Conditions_d'utilisation.</span>" >> $PageSclt
echo " " >> $PageSclt
echo "<div style="font-zize:72%";>" >> $PageSclt
#T exit 0
#T echo -n "Répertoire courant : "
#T pwd
echo "----------"
#O Créer ou recréer le fichier de liste $Projet/$1.pj
cat $Projet/$1.list | awk -F"/" '{ print $NF }' > $Projet/$1.pj
#Liste=~/Annexer/$1/$1.pj
Liste=$Projet/$1.pj
echo "Fichier de liste : "$Liste
#T exit 0
#O tant qu'il y a des lignes dans le fichier de liste,
while read ligne
do
#O afficher la ligne lue,
echo ""
echo " ligne lue = "$ligne
echo ""
#O extraire et copier toutes les chaînes de caractères du fichier html
#O $ligne.html dans le fichier $ligne.str et les dupliquer à l'écran
#T pwd
mkd -pws '**' "$ligne/$ligne.html" $Projet/$ligne/$ligne.tmp | tr ',' '\n' > $Projet/$ligne/$ligne.str
#T break
#O créer les fichiers de documentation des pages :
echo "*** Références : articles, src, lic, contrib. "
#O article,
if [ $ligne != $1 ]
then
echo "'''"$ligne"'''" >> $PageSclt
fi
echo "'''"$ligne"'''" > $Projet/$ligne/$ligne.article
cat $Projet/$ligne/$ligne.article
#O source,
echo -n ", ''source : ''https://"$Site"/w/index.php?oldid=" > $Projet/$ligne/$ligne.RevisionId
cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e wgRevisionId | tr -d ':' | sed "s/\"/%/g" | cut -d'%' -f3 >> $Projet/$ligne/$ligne.RevisionId
if [ $ligne != $1 ]
then
cat $Projet/$ligne/$ligne.RevisionId >> $PageSclt
fi
cat $Projet/$ligne/$ligne.RevisionId
#P licence du bas de page :
#P <li id="footer-info-copyright">Les textes sont disponibles sous <a href="https://creativecommons.org/licenses/by-sa/3.0/">licence Creative Commons attribution partage à l’identique</a> ; d’autres termes peuvent s’appliquer.<br/>
#P Voyez les <a href="https://wikimediafoundation.org/wiki/Conditions_d'utilisation">termes d’utilisation</a> pour plus de détails.<br/></li>
#P
#P license :
#P licence s'écrit license en anglais (langage de base en programmation).
#P <link rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/"/>
#T echo ", ''Droits de copie :''" >> ArticleUn.tmp
#T cat ArticleUn.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 |sed "s/\/\//https:\/\//g" >> ArticleUn.tmp
#O license :
echo -n ", ''licence : ''" > $Projet/$ligne/$ligne.license
#T cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f4 >> $Projet/$ligne/$ligne.license
cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4 >> $Projet/$ligne/$ligne.license
#T cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 | sed "s/\/\//https:\/\//g" >> $Projet/$ligne/$ligne.license
if [ $ligne != $1 ]
then
cat $Projet/$ligne/$ligne.license >> $PageSclt
fi
cat $Projet/$ligne/$ligne.license
#
#P spécial pour bas de page fr ##
cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e footer-info-copyright | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4 > $Projet/$ligne/$ligne.licence
#O auteur(s).
echo -n ", ''auteur(s) : ''" > $Projet/$ligne/$ligne.auteur
cat $Projet/$ligne/$ligne.str | grep -n -m 1 -i -e wgRelevantUserName | sed "s/\"/%/g" | cut -d'%' -f4 > tmp
if test -s tmp;
then cat tmp >> $Projet/$ligne/$ligne.auteur; rm tmp;
else
echo "Pas trouvé d'auteur ! " >> $Projet/$ligne/$ligne.auteur
echo "voir : https://xtools.wmflabs.org/articleinfo/fr.wikibooks.org/$ligne" >> $Projet/$ligne/$ligne.auteur;
fi
if [ $ligne != $1 ]
then
cat $Projet/$ligne/$ligne.auteur >> $PageSclt
cat $Projet/$ligne/$ligne.auteur
fi
echo "" >> $PageSclt
#O fin du tant que.
done < $Projet/$1.pj #< $Liste
echo "</div>" >> $PageSclt
echo "{{Nouvelle page imprimée}}" >> $PageSclt
exit 0
# Fin de ajouter_sclt.sh