Auto-éditer un wikilivre/Auto-référencer/ajouter sclt.sh

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
#! /bin/bash
VERSION=200623
#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 "<small>" >> $PageSclt
cat $Projet/$1".list" | tr ' ' '_' | tr '\n' '%' | sed "s/%/\n\n/g" >> $PageSclt
echo "</small>" >> $PageSclt

#0 ajouter lien vers la source de cette édition.
echo "=== Source de cette édition ===" >> $PageSclt
echo "<small>" >> $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 "</small>" >> $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 "<small>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.</small>" >> $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 "<small>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.</small>" >> $PageSclt
echo " " >> $PageSclt
echo "<small><small>" >> $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 "</small></small>" >> $PageSclt
    echo "{{Nouvelle page imprimée}}" >> $PageSclt

exit 0
# Fin de ajouter_sclt.sh