« Auto-éditer un wikilivre/Auto-référencer » : différence entre les versions

Contenu supprimé Contenu ajouté
m →‎Entête des modules : WL:RD : ! mise en page
Ligne 87 :
</pre>
{{Boîte déroulante début|titre=Code header.sh|styleFrame=width:100%;|fondtitre=#F0F0F0<!--|styleTitre=color:white;|style=headerbleu-->}}
{{/header.sh}}
<syntaxhighlight lang="bash">
#! /bin/bash
#P Nom du fichier de commandes : header ou header.sh
#P Syntaxe : ".header.sh <nom du livre>"
#P Exemple : "./header.sh LivreTest" à la console pour les essais.
#P Ce fichier d'entête est commun aux fichiers de commandes annexer, lister,
#P télécharger, ajouter_sclt, ajouter_sclip dans lesquels ils sont inclus.
#P Date de création : 24 mars 2020
#P Modifié le : 14 mai 2020 par GC ajout des "données_de_conversions" url->utf8
#P Modifié le : 16 mai 2020 par GC maj de la nouvelle syntaxe de la commande.
#P Version sur WikiLivres le : 17 mai 2020
#P
#D Le fichier de commandes header.sh doit être inclus dans tous les modules
#D de test du programme principal. Il initialise le répertoire des commandes,
#D le répertoire de travail du projet; le projet est le nom du livre, de
#D l'article ou de la page. Si ils n'existent pas ils seront créés
#D Ce projet éducatif et de tests est destiné à être utilisé sous wikilivres
#D en langue française et en caractères UTF8.
#D Les variables Site et SitePrefix se rapportent à "fr.wikibooks.org".
#D Le programme est prévu pour fonctionner à l'initiative du contributeur qui
#D qui doit copier la page "Contenus" ou la page de la compilation dans le
#D répertoire de travail "~/Annexe/<nom du livre>"
#D Les modules en tests sont indépendants, cependant ils doivent être exécutés
#D dans l'ordre ./header.sh <livre>, ./lister <livre>, ./télécharger <livre>
#D ./ajouter_sclt <livre>, ./ajouter_sclic, ./ajouter_sclip <livre>
#D La liste des pages à analyser est indispensable dans tous les modules en
#D tests. L'absence de la liste des pages à analyser est signalée à chaque
#D lancement des modules du programme principal "Annexer"
#D
#D AVERTISSEMENT : Ce programme avec ses modules doit être utilisé par des
#D wikipédiens, à titre personnel. La structure du résultat est voisine de
#D l'impression par PediaPress. Pour cette raison ce programme n'est pas
#D commercialisable.
#D
#P Note : L'extraction de la documentation peut se faire par les commandes :
#P Documentation :
#P mkd -Stw D header.sh <livre>_doc/header.sh.D.doc
#P grep -e '#D' header.sh | sed s/#D//g > <livre>_doc/header.sh.HPw.doc
#P Organigrammes :
#P grep -e -n '#H' -e '#P' -e '#w' header.sh
#P ou : grep -E "#H|#P|#w" header.sh > <livre>_doc/header.sh.HPw.doc
#P Exemples :
#P mkd -Stw D header.sh LivreTest_doc/header.sh.D.doc
#P grep -e '#D' header.sh | sed s/#D//g > LivreTest_doc/header.sh.D.doc
#P grep -n -E "#H|#P|#w" header.sh > LivreTest_doc/header.sh.HPw.doc
#P
 
#H vider (nettoyer) l'écran.
clear
 
#Initialiser le répertoire des commandes.
RepCom=~/Annexer
echo "Répertoire des commandes : "$RepCom
 
#H tester la présence du répertoire racine des commandes, si il n'existe pas,
#H le créer.
if test -d $RepCom
then
echo "Le répertoire des commandes : "$RepCom" est correct !";
else
mkdir $RepCom
echo "Le répertoire de travail "$RepCom" a été créé !";
fi
cd $RepCom
 
#H initialiser la variable Conversion avec le lien vers le fichier
#H données_de_conversion
Conversions=données_de_conversions
 
#H si le programme de test de header.sh est actif, alors supprimer le fichier
#H 'données_de_conversions'
if [ $0 = "./header.sh" ]
then
echo "suppression du fichier 'données_de_conversions'."
rm données_de_conversions
fi
 
#H tester la présence du fichier des 'données_de_conversion', si il n'existe
#H pas; le créer.
if test -a "données_de_conversions"
then echo "Le fichier données_de_conversion est présent"
else {
echo "s/%E2%80%99/\&#8217\;/g;s/%E2%82%AC/\&#8364\;/g;s/%2F/\//g;s/%3F/\?/g;" > données_de_conversions
echo "s/%24/\$/g;s/%21/\!/g;s/%25/%/g;s/%2B/+/g;s/%3C/\\\&lt\;/g;s/%3E/\&gt\;/g;" >> données_de_conversions
echo "s/%5C/\\\/g;s/%B0/°/g" >> données_de_conversions
echo "s/%E0/à/g;s/%E2/â/g" >> données_de_conversions
echo "s/%E8/è/g;s/%E9/é/g;s/%EA/ê/g;s/%EB/ë/g" >> données_de_conversions
echo "s/%EE/î/g;s/%EF/ï/g" >> données_de_conversions
echo "s/%F4/ô/g" >> données_de_conversions
echo "s/%F9/ù/g;s/%FB/û/g" >> données_de_conversions
echo 's/%2C/,/g;s/%21/!/g;s/%3F/?/g;s/%40/@/g;s/%23/#/g;s/%24/$/g' >> données_de_conversions
echo "s/%25/%/g;" >> données_de_conversions
echo "s/%26/\&#x26\;/g;" >> données_de_conversions
echo "s/%28/(/g;s/%29/)/g;" >> données_de_conversions
echo "s/%2B/+/g;" >> données_de_conversions
echo "s/%3A/:/g;" >> données_de_conversions
echo "s/%3D/=/g;" >> données_de_conversions
echo "s/%5B/[/g;" >> données_de_conversions
echo "s/%5D/]/g" >> données_de_conversions
echo "s/%3B/;/g;s/%2F/\//g;s/%27/''/g" >> données_de_conversions
echo 's/%22/"/g' >> données_de_conversions
echo "s/%C3%A7/ç/g;s/%E7/ç/g" >> données_de_conversions
echo "s/+/ /g;s/%7E/~/g;s/\\\/\&#92\;/g" >> données_de_conversions
echo "s/%0D/\&#x0D\;/g;s/%0A/\&#x0A\;/g" >> données_de_conversions
echo "s/%C3%A0/à/g;s/%C3%A2/â/g" >> données_de_conversions
echo "s/%C3%A9/é/g;s/%C3%A8/è/g;s/%C3%AA/ê/g" >> données_de_conversions
echo "s/%C3%AE/î/g;s/%C3%AF/ï/g" >> données_de_conversions
echo "s/%C3%B4/ô/g" >> données_de_conversions
echo "s/%C3%B9/ù/g;s/%C3%BB/û/g" >> données_de_conversions
echo "s/%C2%B7/-/g;s/%C2%AB/«/g;s/%C2%BB/»/g" >> données_de_conversions
}
echo "Le fichier 'données_de_conversions' est créé ou mis à jour."
fi
#T cat $RepCom/$Conversions
#T exit
#T echo "https://fr.wikibooks.org/wiki/Fichier:Commerce_de_communaut%C3%A9s_indig%C3%A8nes.JPG"| sed -f $RepCom/$Conversions
#T exit
#T
#T echo "Paramètre d'entrée : "$1
#T exit 2
 
#H créer la foncion header_syntax.
function header_syntax
{
echo "Syntaxe de la commande header.sh en mode tests: $0 <livre>"
echo "Exemple : '$0 LivreTest' ou '$0 ?'"
#w seulement avec la commande 'Annexer'
#w echo "ou $0 <livre> [-v] [-pb||-pc]"
#w echo "options -v:mode bavard, -pb ou -pc:versions personnalisées Wikibooks ou Commons."
echo ""
}
 
#H tester la présence du premier paramètre de la ligne de commandes
if test -z "$1"
then
echo "-----"
echo "Erreur, pas de paramètre en entrée"
header_syntax
exit 1;
else if [ $1 != '?' ]; then echo "Projet : création de la page '$1.annexe' du livre : $1"; fi;
fi
 
if test $1; then
if [ $1 = "?" ]
then
header_syntax
exit 0 #P exit 0 : Fin d'affichage de la syntaxe
fi
fi
 
#H initialiser la variable "Projet" = répertoire de projet.
Projet=$RepCom/$1
echo "Répertoitre de projet : "$Projet
echo "----------"
#T read -p "Si tout est correct : retour-chariot une pour continuer, Ctrl-C pour quitter >"
 
#H tester la présence du répertoire du projet, si il n'existe pas, le créer.
if test -d $Projet
then
echo "Le répertoire des commandes : "$Projet" est correct !";
else
mkdir $Projet
echo "Le répertoire de travail "$Projet" a été créé !";
fi
 
#H initialiser les variables 'Site' (nom du serveur) et 'SitePrefix'.
Site="fr.wikibooks.org"
SitePrefix="https:\/\/fr.wikibooks.org\/wiki\/"
 
#H nettoyer l'écran, afficher les variables globales et le contenu du répertoire de projet.
#T clear
echo "----------"
echo "Nom du projet: "$1
echo "Site: "$Site
echo "Préfixe du site: $SitePrefix pour la commande shell sed."
echo "----------"
echo "Liste des liens vers les articles à analyser:"
echo "fichier : "$Projet/$1".list si il existe."
if test -a $Projet/$1.list;
then
echo "le fichier : "$Projet/$1".list existe.";
else
echo -e "\033[31mle fichier : "$Projet/$1".list n'a pas encore été créé.\033[0m";
fi
echo "----------"
echo "Liste des pages et articles à analyser:"
echo "fichier : "$Projet/$1".prj si il existe."
if test -a $Projet/$1.prj;
then
echo "le fichier : "$Projet/$1".prj existe.";
else
echo -e "\033[31mle fichier : "$Projet/$1".prj n'a pas encore été créé.\033[0m";
fi
echo "----------"
echo "Contenu du répertoire de travail du projet:"
ls -al $Projet
echo "----------"
 
#H entrer dans la répertoire de travail.
cd $Projet
</syntaxhighlight>
{{Boîte déroulante fin}}