Auto-éditer un wikilivre/Auto-référencer/header.inc.sh

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
#! /bin/bash
VERSION=200623
#P Nom du fichier de commandes : header.sh ou header.inc.sh (30 mai 2020)
#P Syntaxe : "./header.inc.sh <nom du livre>"
#P Exemple : "./header.inc.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 Modifié le : 30 mai 2020 par GC maj pour l'installation automatique.
#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

if [ $0=header.inc ]; then echo "header.inc : Version "$VERSION; fi

#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 -e "\033[1m-> ATTENTION\033[0m : Le nom du livre ne doit pas contenir le caractère 'espace'"
       echo "Exemples : '$0 Faire_fleurir_le_sel' 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 de projet : "$Projet" est correct !";
   else
      mkdir $Projet
      echo "Le répertoire de projet "$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
# Fin header.inc.sh