Annexes de wikibooks/Version imprimable
Annexes de Wikibooks De la conception à la programmation |
Contenu
modifier
Autoréférencer
modifierGoelette Cardabela Auto-éditer_un_wikilivre Auto-référencer Annexer pré-étude |
Auto-éditer un wikilivre
Auto-référencer
Éditeur : Goelette Cardabela
Auto-référencer
modifier- L'édition de la version du 17 avril 2020 a l'avantage de sa fraîcheur, plus claire que les versions postérieures.
Table des matières par chapitres
modifier1 Titre page 3 2 Auto-référencer page 5 2.1 Table des matières par chapitres page 5 2.2 Codes shell pour créer la page « Annexe » 7 2.2.1 Annexer 7 2.2.2 Lister 9 2.2.3 Télécharger 12 2.2.4 Ajouter sclt 15 2.2.5 Ajouter scli 19 2.2.5.1 Le fichier d'entête 19 2.2.5.2 Le fichier de commandes 2.3 Tester les codes 23 2.3.1 Commençons par le fichier de commandes principal « annexer » 23 2.3.1.1 Lançons les tests 24 2.3.2 Poursuivons avec le fichier de commandes « lister » 25 2.3.2.1 Les lignes qui méritent notre attention 25 2.3.2.2 Lançons les tests 26 2.3.3 Poursuivons avec le fichier de commandes « télécharger » 27 2.3.3.1 Les lignes qui méritent notre attention 27 2.3.3.2 Lançons les tests 28 2.3.4 Poursuivons avec le fichier de commandes « ajouter_sclt » 29 2.3.4.1 Les lignes qui méritent notre attention 29 2.3.4.2 Lançons les tests 32 2.3.5 Poursuivons avec le fichier de commandes « ajouter_scli » 33 2.3.5.1 Le fichier d'entête 33
self-referencing
Codes shell pour créer la page « Annexe »
modifierAnnexer
modifier- (Appendix)
Annexer ou annexer.sh est la page principale qui permet de produire la page « Annexe », elle utilise les commandes shell "lister", "télécharger", "ajouter_sclt" et "ajouter_scli"
La première partie qui précède #O## annexer ################ est l'entête. Elle utilisée dans tous les fichiers de commandes de cet article.
dans le fichier de commandes ajouter_scli cette entête est volontairement séparée pour la démonstration, avec son inclusion par la commande source.
Les autres fichiers de commandes incluent directement cette entête pour faciliter la compréhension des codes.
#! /bin/bash
#P Nom du fichier de commandes : annexer
#P Syntaxe : "annexer <nom du livre>"
#P Exemple : "./annexer LivreTest" à la console.
#P Date de création : 24 mars 2020
#P Modifié le : 7 avril 2020 par GC
#P Version sur WikiLivres le : 9 avril 2020
#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, 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
#T echo "Paramètre d'entrée : "$1
#T exit 2
#H tester la présence du paramètre de la ligne de commandes
if test -z "$1"
then echo "Erreur, pas de paramètre en entrée : le paramètre est \"${1}\" "
echo "Syntaxe de la commande : ./annexer <fichier>, (exemple : Annexer LivreTest)"
echo " "
exit 1;
else echo "Projet : création de la page "$1.annexe" du livre : \"${1}\" "
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
echo "----------"
echo "Liste des pages et articles à analyser, 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
ls -al $Projet
echo "----------"
#H entrer dans la répertoire de travail.
cd $Projet
#O## annexer ################
#O effacer tous les fichiers *.html *.str *.img *.lnk tmp temp *.tmp *.temp *.list ?
#O si le la réponse au clavier est 'o' (oui !), effacer les fichiers du répertoire de projet (nom du livre).
#O sinon, continuer.
echo "effacer tous les fichiers *.html *.str *.img *.lnk tmp temp *.tmp *.temp *.list ?"
echo -e "\033[31m 'o' pour approuver l'effacement des fichiers obsolètes. \033[0m "
echo " Retour-chariot pour continuer, Ctrl-C pour quitter."
read -n1 -p -s Inkey
echo "Inkey = "$Inkey
if test [$Inkey = 'o']
then {
cd $Projet
echo -e "\033[31mSuppression des fichiers obsolètes.\033[0m "
rm *.html *.str *.img *.lnk tmp temp *.tmp *.temp *.list
}
else echo "Pas de suppression de fichiers ! ... suite ..."
fi
#O créer le fichier contenant la liste des articles à analyser. (../lister $1)
../lister $1
echo "Code de retour de la commande lister : "$?
#w exit 0
exit 0
#T créer les répertoires et sous répertoires complets du livre. (../télécharger $1)
../télécharger $1
echo "Code de retour de la commande télécharger : "$?
#O créer la "page Annexe" et ajouter les sources, contributeurs, droits de copie du texte des articles.
#O sclt : s=source, c=contributeurs, l=license, t=texte des articles. (../ajouter_sclt $1)
#../ajouter_sclt
echo "Code de retour de la commande ajouter_sclt : "$?
#O ajouter les sources, licence, contributeurs des images. (../ajouter_scli $1)
#../ajouter_scli
echo "Code de retour de la commande ajouter_scli : "$?
exit 0
Lister
modifier- (List)
Créer une liste des liens vers les pages qui composent le livre.
#! /bin/bash
#P Nom du fichier de commandes : lister
#P Syntaxe : "lister <nom du livre>"
#P Exemple : "./lister LivreTest" àl a console.
#P Date de création : 26 mars 2020
#P Modifié le : 11 avril 2020 par GC
#P Version sur WikiLivres le : 10 avril 2020
#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, 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
#T echo "Paramètre d'entrée : "$1
#T exit 2
#H tester la présence du paramètre de la ligne de commandes
if test -z "$1"
then echo "Erreur, pas de paramètre en entrée : le paramètre est \"${1}\" "
echo "Syntaxe de la commande : ./annexer <fichier>, (exemple : Annexer LivreTest)"
echo " "
exit 1;
else echo "Projet : création de la page "$1.annexe" du livre : \"${1}\" "
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
echo "----------"
echo "Liste des pages et articles à analyser, 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
ls -al $Projet
echo "----------"
#H entrer dans la répertoire de travail.
cd $Projet
#O## lister #################
#O effacer tous les fichiers *.list,
rm *.list
#O créer le fichier de liste $Projet/$1.list avec le fichier "contenu" prioritaire, sinon avec le fichier "compilé" s'il existe.
#O si le fichier LivreTest.contenu existe,
if test -r $Projet/$1.contenu;
#O alors :
then {
#O s'assurer que le fichier sera en lecture seule,
chmod 444 $Projet/$1.contenu
#O créer la liste des articles de la page avec le contenu.
echo "LivreTest.list avec LivreTest.contenu :"
cat $Projet/$1.contenu | sed "s/\[\[/$SitePrefix/g" | tr '|' '\n' | grep "wiki" > $Projet/$1.list
}
#O sinon, si le fichier LivreTest.compilé existe,
elif test -r $Projet/$1.compilé
#O alors :
then {
#O s'assurer que le fichier sera en lecture seule,
chmod 444 $Projet/$1.compilé
#O créer la liste avec la page de compilation.
echo "LivreTest.list avec LivreTest.compilé :"
cat $Projet/$1.compilé | sed "s/:\[\[/$SitePrefix/g" | tr '|' '\n' | sed "s/\]\]//g" | grep "wiki" > $Projet/$1.list
}
#O fin si
fi
#O afficher la liste pour contrôle et retourner la valeur 0 si tout est correct.
echo ""
cat $Projet/$1.list
echo " "
read -p "Si tout est correct : retour-chariot une pour continuer, Ctrl-C pour quitter > "
exit 0
Télécharger
modifier- (Download)
Télécharger le code source de la page ou la sous page grâce à la liste obtenue dans la section Télécharger.
#! /bin/bash
#P Nom du fichier de commandes : télécharger
#P Syntaxe : "télécharger <nom du livre>"
#P Exemple : "./télécharger LivreTest" à la console.
#P Date de création : 28 mars 2020
#P Modifié le : 10 avril 2020 par GC
#P Version sur WikiLivres le : 10 avril 2020
#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, 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
#T echo "Paramètre d'entrée : "$1
#T exit 2
#H tester la présence du paramètre de la ligne de commandes
if test -z "$1"
then echo "Erreur, pas de paramètre en entrée : le paramètre est \"${1}\" "
echo "Syntaxe de la commande : ./annexer <fichier>, (exemple : Annexer LivreTest)"
echo " "
exit 1;
else echo "Projet : création de la page "$1.annexe" du livre : \"${1}\" "
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
echo "----------"
echo "Liste des pages et articles à analyser, 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
ls -al $Projet
echo "----------"
#O## télécharger ############
#O créer les répertoires et sous répertoires complets du livre.
echo "Créer le fichier de projet "$Projet/$1.prj
cd $Projet
echo "créer la hirarchie complète des répertoires du livre"$1
wget -r -linf -k -p -E -i $1.list -o wget-log.txt
echo "----------"
#O créer les fichiers html des articles (sans l'extension '.html').
echo "créer les fichiers exploitables pour douomenter la page Annexe et les lister dans le fichier " $Projet/$1.prj
wget -r -i $1.list -o wget-log.txt
ls --format=single-column --hide=*.txt --hide=*.list --hide=*.prj --hide=*.annexe --hide=*.co* --hide=Sauv --hide=*.org > $Projet/$1.prj
cat $Projet/$1.prj
#T exit 2
echo "----------"
# echo -en "\033[31mRetour-chariot une pour créer l'Annexe des articles, Ctrl-C pour quitter.\033[0m "
# read -p ">"
# "\033[31mRetour-chariot une pour créer l'Annexe, Ctrl-C pour quitter >"
return 0
Ajouter sclt
modifier- (Adding sclt) or (Append sclt)
Ajouter la section article, source, licence, contributeur(s).
#! /bin/bash
#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 : 12 avril 2020 par GC
#P Version sur WikiLivres le : 13 avril 2020
#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, 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
#T echo "Paramètre d'entrée : "$1
#T exit 2
#H tester la présence du paramètre de la ligne de commandes
if test -z "$1"
then echo "Erreur, pas de paramètre en entrée : le paramètre est \"${1}\" "
echo "Syntaxe de la commande : $0 <fichier>, (exemple : $0 LivreTest)"
echo " "
exit 1;
else echo "Projet : création de la page "$1.annexe" du livre : \"${1}\" "
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
echo "----------"
echo "Liste des pages et articles à analyser, 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
ls -al $Projet
echo "----------"
#O## ajouter_sclt ###########
PageSclt=$Projet/$1.sclt
echo $PageSclt
cd $Projet
#T exit 0
#O But : créer la page "Annexe" (avec les pages Projet.sclt + Projet.scli)
echo "créer la page "$PageSclt
echo "----------"
echo "= Annexe =" > $PageSclt
#O ajouter les références
echo "<references />" >> $PageSclt
echo " " >> $PageSclt
echo "{{Nouvelle page imprimée}}" >> $PageSclt
#O ajouter la liste créée avec la page "Contenus" de la version imprimable ou la page compilée ?
echo "== Contenus ==" >> $PageSclt
echo "<small>" >> $PageSclt
cat $Projet/$1".list" | tr ' ' '_' | tr '\n' '%' | sed "s/%/\n\n/g" >> $PageSclt
echo " " >> $PageSclt
#0 ajouter La source de cette édition.
echo "=== Source de cette édition de version imprimable ou compilée ===" >> $PageSclt
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 page 'Article', 'Source', 'licence', 'Contributeur(?)'
echo "== Sources licences et contributeurs des articles ==" >> $PageSclt
echo "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." >> $PageSclt
echo " " >> $PageSclt
echo "<small><small>" >> $PageSclt
#T exit 0
#T echo -n "Répertoire courant : "
#T pwd
echo "----------"
Liste=~/Annexer/$1/$1.prj
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 de $line dans le fichier $ligne.str et les dupliquer à l'écran.
mkd -pws '**' $Projet/$ligne $Projet/$ligne.tmp | tr ',' '\n' > $Projet/$ligne.str
#O créer les fichiers de documentation des pages.
echo "*** Références : articles, src, lic, contrib. "
#O article :
echo "'''"$ligne"'''" >> $PageSclt
echo "'''"$ligne"'''" >> $Projet/$ligne.article
cat $Projet/$ligne.article
#O source :
echo -n ", ''source : ''https://"$Site"/w/index.php?oldid=" > $Projet/$ligne.RevisionId
cat $Projet/$ligne.str | grep -n -m 1 -i -e wgRevisionId | tr -d ':' | sed "s/\"/%/g" | cut -d'%' -f3 >> $Projet/$ligne.RevisionId
cat $Projet/$ligne.RevisionId >> $PageSclt
cat $Projet/$ligne.RevisionId
#O licence :
#w licence s'écrit license en anglais (langage de base en programmation).
#echo ", ''Droits de copie :''" >> ArticleUn.tmp
#cat ArticleUn.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 |sed "s/\/\//https:\/\//g" >> ArticleUn.tmp
echo -n ", ''licence : ''" >> $PageSclt
echo -n ", ''licence : ''" > $Projet/$ligne.license
cat $Projet/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 | sed "s/\/\//https:\/\//g" >> $Projet/$ligne.license
#T (french footer licence) cat $Projet/$ligne.str | grep -n -m 1 -i -e licence | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4 | sed "s/\/\//https:\/\//g" > $Projet/$ligne.licence
cat $Projet/$ligne.license >> $PageSclt
cat $Projet/$ligne.license
#O auteur(s) :
echo -n ", ''auteur(s) : ''" >> $PageSclt
cat $Projet/$ligne.str | grep -n -m 1 -i -e wgRelevantUserName | sed "s/\"/%/g" | cut -d'%' -f4 > $Projet/$ligne.auteur
cat $Projet/$ligne.auteur >> $PageSclt
cat $Projet/$ligne.auteur
echo "" >> $PageSclt
#O fin du tant que.
done < $Liste
echo "</small></small>" >> $PageSclt
echo "{{Nouvelle page imprimée}}" >> $PageSclt
exit 0
Ajouter scli
modifier- (Adding scli) or (Append scli)
Ajouter la section image, source, license, contributeurs(s) à la page Annexe.
Le fichier d'entête
modifierCe fichier doit être inclus dans le fichier de commandes ajouter_scli
#! /bin/bash
#P Nom du fichier de commandes : header ou header.sh
#P Syntaxe : "annexer <nom du livre>"
#P Exemple : "./annexer LivreTest" à la console pour les essais.
#P Ce fichier d'entête est commun aux fichiers de commandes annexer, lister, télécharger, ajouter_sclt, dans lesquels ils sont inclus.
#P Il doit être inclus dans le fichier de commandes ajouter_scli par la commande "source". Exemple : "source header.sh"
#P Date de création : 24 mars 2020
#P Modifié le : 12 avril 2020 par GC
#P Version sur WikiLivres le : 127 avril 2020
#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, 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
#T echo "Paramètre d'entrée : "$1
#T exit 2
#H tester la présence du paramètre de la ligne de commandes
if test -z "$1"
then echo "Erreur, pas de paramètre en entrée : le paramètre est \"${1}\" "
echo "Syntaxe de la commande : $0 <fichier>, (exemple : $0 LivreTest)"
echo " "
exit 1;
else echo "Projet : création de la page "$1.annexe" du livre : \"${1}\" "
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
echo "----------"
echo "Liste des pages et articles à analyser, 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
ls -al $Projet
echo "----------"
#H entrer dans la répertoire de travail.
cd $Projet
Le fichier de commandes
modifierCette partie est consultable sur les versions plus récentes de Auto-référencer.
Pour consulter la section la plus élaborée, voyez Annexer, la troisième partie, imprimable.
Tester les codes
modifierLes fichiers de commandes shell peuvent être éprouvés successivement, sous linux ou sous d'autres systèmes d'exploitation acceptant les commandes shell : Windows 10[1][2], MinGw, Cygwin, ....
Pour effectuer ces tests il faut se placer dans le répertoire utilisateur et créer un répertoire des commandes, dans les exemples : mkdir ~/annexer
Les fichiers de commandes annexer, lister, télécharger, ajouter-sclt, ajouter-scli, sont prévus pour être placés dans ce répertoire.
Les commandes peuvent être éprouvées avec tous les livres disponibles. Pour ces tests nous avons utilisé le livre « LivreTest ».
Commençer par le fichier de commandes principal « annexer »
modifierCe fichier de commandes contrôle le bon fonctionnement de l'entête qui est commune à tous les fichiers de commandes. cette entête pourrait s'appeler header.sh et être inclus dans les fichiers de commandes avec l'option source header.sh s'il est dans le même répertoire des commandes, ou reconnu dans l'environnement (path).
Il vérifie que le répertoire des fichiers de commandes est correct, que le nom du projet est bien présent sur la ligne de commande en premier paramètre, comme dans l'exemple suivant : "./annexer LivreTest" où la variable de projet est LivreTest, le nom du livre.
Les commandes de ce fichier créent le répertoire des fichiers de commandes si il n'existe pas. Il va créer le répertoire du projet dans lequel on trouvera tous les fichiers intermédiaires, notamment : "Projet.list", "Projet.prj", "Projet.annexe", tous les fichiers html des Articles et les documents extraits les concernant; Article avec les extensions .article, .auteur, .license, voire aussi .licence français du bas de page, .RevisionID, etc ...
Pseudo codes obtenu avec la commande "mkd -Snws OPTHw annexer" :
#H sont les commentaires d'entête. On va les retrouver dans toutes les commandes du projet
#O sont les commentaires d'organigramme.
#P sont les commentaires destinés aux Programmeurs.
#S sont les commentaires de structure.
#T sont les commentaire de tests, ce souvent des point d'arrêt pour la mise au point.
#w sont des commentaires d'attention, de mise en garde.
(fichier annexer :)
2 #P Nom du fichier de commandes : annexer
3 #P Syntaxe : "annexer <nom du livre>"
4 #P Exemple : "./annexer LivreTest" à la console.
5 #P Date de création : 24 mars 2020
6 #P Modifié le : 7 avril 2020 par GC
7 #P Version sur WikiLivres le : 9 avril 2020
9 #H vider (nettoyer) l'écran.
16 #H tester la présence du répertoire racine des commandes, si il n'existe pas, le créer.
26 #T echo "Paramètre d'entrée : "$1
27 #T exit 2
29 #H tester la présence du paramètre de la ligne de commandes
38 #H initialiser la variable "Projet" = répertoire de projet.
42 #T read -p "Si tout est correct : retour-chariot une pour continuer, Ctrl-C pour quitter >"
44 #H tester la présence du répertoire du projet, si il n'existe pas, le créer.
53 #H initialiser les variables 'Site' (nom du serveur) et 'SitePrefix'.
57 #H nettoyer l'écran, afficher les variables globales et le contenu du répertoire de projet.
58 #T clear
74 #H entrer dans la répertoire de travail.
77 #O## annexer ################
79 #O effacer tous les fichiers *.html *.str *.img *.lnk tmp temp *.tmp *.temp *.list ?
80 #O si le la réponse au clavier est 'o' (oui !), effacer les fichiers du répertoire de projet (nom du livre).
81 #O sinon, continuer.
96 #O créer le fichier contenant la liste des articles à analyser. (../lister $1)
99 #w exit 0
101 #T créer les répertoires et sous répertoires complets du livre. (../télécharger $1)
105 #O créer la "page Annexe" et ajouter les sources, contributeurs, droits de copie du texte des articles.
106 #O sclt : s=source, c=contributeurs, l=license, t=texte des articles. (../ajouter_sclt $1)
110 #O ajouter les sources, licence, contributeurs des images. (../ajouter_scli $1)
Lançer les tests
modifierFaire un brouillon avec le micro-ordinateur sous linux (ou autre système acceptant les shells linux).
- Mettre l'ordinateur en marche.
- Copier le code du fichier annexer dans un éditeur de texte comme Notepadqq, Gedit, ou Bluefish.
- Créer le répertoire Annexer avec l'éditeur, ou, sous console : mkdir ~/Annexer
- Enregistrer le texte avec pour nom annexer dans le répertoire Annexer.
- Sous console, entrer dans le répertoire Annexer : cd ~/Annexer
- Rendre la commande "annexer" exécutable : chmod 777 annexer
- Lancer la commande ./annexer LivreTest et finir avec un retour-chariot
- Observer le répertoire Annexer : ls -l ~/Annexer/LivreTest qui doit être vide.
Note : Si vous lancez la commande ./annexer LivreTest de n'importe répertoire, les répertoires ~/Annexer et ~/annexer LivreTest seront automatiquement créés. Il suffira de copier le fichier de commandes Annexer ou annexer.sh dans le répertoire de fichiers de commandes :
"mv ./annexer ~/Annexer/annexer" ou "mv ./annexer.sh ~/Annexer/annexer.sh"
Poursuivre avec le fichier de commandes « lister »
modifierLe but est d'obtenir un fichier qui content la liste des liens vers les pages d'un de wikilivres à documenter.
- Exemple par la page LivreTest.list
- Cette page va nous servir pour télécharger le code html de ces pages.
https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleUn https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleDeux https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleTrois
Nous pouvons obtenir ces liens grâce aux pages « Contenus » des Versions imprimables et « Compilation » issue de la compilation d'une page. (Menu à gauche d'une page wikimedia.)
Il est aussi possible d'éditer et d'enregistrer manuellement une telle liste.
Les lignes qui méritent une attention
modifierLa ligne 91 dans l'édition du 11 avril 2020 :
Remarque : $Projet est un répertoire et $1.contenu est un fichier.
cat $Projet/$1.contenu | sed "s/\[\[/$SitePrefix/g" | tr '|' '\n' | sed "s/\]\]//g" | grep "wiki" > $Projet/$1.list
Cette ligne prend en compte le texte de la page Contenus de la Version imprimable du livre pour créer le fichier de liste.
La ligne elle même signifie :
ouvrir le flux du fichier '''''$Projet/$1.contenu''''' | filtrer et remplacer la chaîne "[[" par le préfixe du site $SitePréxixe (chaîne "https://fr.wikibooks.org/wiki/"), | filtrer et remplacer le caractère '|' par le caractère '\n' (retour-chariot),( si ce caractère '|' existe !), | filtrer et supprimer la chaîne "]]", (si cette chaîne exite !), | fitrer et ne retenir que la ligne qui contient la chaîne "wiki", > rediriger le flux vers la création du fichier '''''$Projet/$1.list'''''.
- Exemple d'une page Contenus de Version imprimable :
; Article maître du livre [[Utilisateur:Goelette Cardabela/Sandbox/LivreTest|LivreTest]] ; Contenus [[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleUn|ArticleUn]]<br /> [[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleDeux|ArticleDeux]]<br /> [[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleTrois|ArticleTrois]] {{Autocat}}
La ligne 101 de la même édition :
cat $Projet/$1.compilé | sed "s/:\[\[/$SitePrefix/g" | tr '|' '\n' | sed "s/\]\]//g" | grep "wiki" > $Projet/$1.list
Cette ligne prend en compte le texte de la page Compilation de la Version compilée du livre pour créer le fichier de liste.
Le commentaire est le même que pour la ligne précédent à ceci près qu'au premier filtre on supprime aussi le caractère ':' du début de ligne des fichiers issus de la compilation.
- Exemple d'une page de Compilation de Version compilée :
== LivreTest == === Tests de référencement === ; Article maître du livre :[[Utilisateur:Goelette Cardabela/Sandbox/LivreTest|LivreTest]] ; Contenus :[[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleUn]] :[[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleDeux]] :[[Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleTrois]] [[Catégorie:Compilations|LivreTest]]
Lancer les tests
modifier- Copier le code du chapitre Lister dans un éditeur et enregitrer ce code dans le répertoire Annexe sous le nom « lister » ou « lister.sh »
- Autoriser l'exécution du code par la commande chmod 777 ~/Annexe/lister
- Copier le « Contenus » de la Version imprimable vu précédemment dans ce sous chapitre,
- Enregistrer ce « Contenus » dans le fichier Annexe/LivreTest/LivreTest.contenus
- Lancer la commande ./lister LivreTest
On devrait obtenir le fichier ~/Annexe/LivreTest/LivreTest.list :
https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleUn https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleDeux https://fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest/ArticleTrois
Vérifier que l'on a modifié les autorisations du fichier LivreTest.contenus afin qu'il ne puisse pas être supprimé par mégarde lors des manipulations de fichiers.
~/Annexer$ ls -l ~/Annexer/LivreTest/LivreTest.contenu -r--r--r-- 1 gc gc 353 avril 3 16:57 /home/gc/Annexer/LivreTest/LivreTest.contenu
Poursuivre avec le fichier de commandes « télécharger »
modifierLe but est de télécharger tous les fichiers html qui composent le livre grâce au fichier de liste obtenu précédemment.
Les lignes qui méritent une attention
modifierlignes 80 à 87 de la version du 10avril 2020
wget -r -linf -k -p -E -i $1.list -o wget-log.txt
echo "----------"
#O créer les fichiers html des articles (sans l'extension '.html').
echo "créer les fichiers exploitables pour documenter la page Annexe et les lister dans le fichier " $Projet/$1.prj
wget -r -i $1.list -o wget-log.txt
ls --format=single-column --hide=*.txt --hide=*.list --hide=*.prj --hide=*.annexe --hide=*.co* --hide=Sauv --hide=*.org > $Projet/$1.prj
cat $Projet/$1.prj
La première ligne crée la structure complète des répertoires et fichiers, depuis la racine du site, jusqu'aux fichiers html qui composent le livre.
La cinquième ligne crée les fichiers html à analyser, dans le répertoire courant.
La sixième ligne crée le fichier de projet $Projet/$1.prj. Ce fichier nous sera utile pour créer la page « Annexe » complète sclti concaténation de sclt et scli.
sclti signifie : Sources, Contributeur(s), Licences, Textes, et Images; on entend par Textes les contenus des articles, et par Images toutes les illustrations.
- Liste des fichiers html créés
ls -a ./LivreTest ./Article* dans le répertoire du projet LivreTest.
./ArticleDeux ./ArticleUn ./ArticleTrois ./LivreTest
Lancer les tests
modifierCopier le code du chapitre Télécharger dans un éditeur et enregistrer ce code dans le répertoire Annexe sous le nom « télécharger » ou « télécharger.sh » Autoriser l'exécution du code par la commande chmod 777 ~/Annexe/télécharger Lancer la commande ./télécharger LivreTest
On devrait obtenir :
- Structure complète avec la commande "wget -r -linf -k -p -E -i $1.list -o wget-log.txt"
ls -R fr.wikibooks.org/ dans le répertoire du projet LivreTest.
fr.wikibooks.org/: robots.txt wiki fr.wikibooks.org/wiki: 'Utilisateur:Goelette Cardabela' 'fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela': Sandbox 'fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox': LivreTest LivreTest.html 'fr.wikibooks.org/wiki/Utilisateur:Goelette Cardabela/Sandbox/LivreTest': ArticleDeux ArticleTrois ArticleUn ArticleDeux.html ArticleTrois.html ArticleUn.html
- Liste des fichiers html créés avec la commande" wget -r -i $1.list -o wget-log.txt"
ls -a ./LivreTest ./Article* dans le répertoire du projet LivreTest.
./ArticleDeux ./ArticleUn ./ArticleTrois ./LivreTest
- Contenu du fichier de projet LivreTest.prj
cat LivreTest.prj dans le répertoire du projet LivreTest.
ArticleDeux ArticleTrois ArticleUn LivreTest
Poursuivre avec le fichier de commandes « ajouter_sclt »
modifierLe but est de créer l'entête de la page Annexe et d'y ajouter la liste des articles avec les sources, licences, contributeurs.
Les numéros des pages n'est possibles que lorsque la version imprimable aura été créée, avec une post-indexation et une post-annexion.
Les lignes qui méritent une attention
modifierRemarque : Dans les explications du code on entend par projet le nom du projet entré en paramètre dans la commande ./ajouter_sclt projet
Lignes 125-126 de la version du 13 avril 2020
#O extraire et copier toutes les chaînes de caractères de $line dans le fichier $ligne.str et les dupliquer à l'écran. mkd -pws '**' $Projet/$ligne $Projet/$ligne.tmp | tr ',' '\n' > $Projet/$ligne.str
mkd n'est pas inclus dans les distributions linux. les paquets et sources sont téléchargeable pour tous les systèmes d'exploitation.
Pour toute informations complémentaires : mkd (commande unix), Mkd_(Extracteur_de_documents)
Cette ligne de commandes extrait tous les commentaires avec une sortie dans un fichier projet.tmp ainsi que vers la sortie standard (l'écran par défaut) où elle est reprise pour être listée en colonne grâce au séparateur de chaînes ','.
Lignes 131-134
#O article : echo ""$ligne"" >> $PageSclt echo ""$ligne"" >> $Projet/$ligne.article cat $Projet/$ligne.article
$ligne est la variable lue ligne par ligne du fichier de liste projet.prj dans une boucle tant qu'il y a des lignes à lire, faire ...
Cette ligne est aussi le nom de l'article qui va être analysé.
Lignes 136-140
#O source : echo -n ", source : https://"$Site"/w/index.php?oldid=" > $Projet/$ligne.RevisionId cat $Projet/$ligne.str | grep -n -m 1 -i -e wgRevisionId | tr -d ':' | sed "s/\"/%/g" | cut -d'%' -f3 >> $Projet/$ligne.RevisionId cat $Projet/$ligne.RevisionId >> $PageSclt cat $Projet/$ligne.RevisionId
La deuxième ligne crée le fichier de projet.RevisionId dans lequel on écrit une chaîne de caractères sans retour à la ligne.
La troisième ligne :
cat ouvre le flux du fichier projet.str | retient la ligne qui contient wgRevisionId, | supprime le caractère ':' qu'il contient | remplace les caractères '"' par le caractère '%' | coupe la chaîne à l'endroit où se trouvent les caractères '%' et sélectionne le champ 3. >> la chaîne résultante est ajoutée au fichier projet.RevisionId
Lignes 143-153
#O licence : #w licence s'écrit license en anglais (langage de base en programmation). #echo ", Droits de copie :" >> ArticleUn.tmp #cat ArticleUn.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 |sed "s/\/\//https:\/\//g" >> ArticleUn.tmp echo -n ", licence : " >> $PageSclt echo -n ", licence : " > $Projet/$ligne.license cat $Projet/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 | sed "s/\/\//https:\/\//g" >> $Projet/$ligne.license #T (french footer licence) cat $Projet/$ligne.str | grep -n -m 1 -i -e licence | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4 | sed "s/\/\//https:\/\//g" > $Projet/$ligne.licence cat $Projet/$ligne.license >> $PageSclt cat $Projet/$ligne.license
Les lignes 1 et 2 sont des commentaires à l'usage des programmeurs.
Les lignes 3 et 4 sont des lignes de tests
La ligne 6 ajoute ", ''licence'' :" au fichier projet.sclt
La ligne 7 crée le fichier projet.lisence et y ajoute la même chaîne qu'à la ligne 6
La ligne 8 :
cat ouvre le flux du fichier projet.str, | retient la ligne qui contient lisence, | sélectionne la chaîne "/ et la remplace par la chaîne %/, | supprime '%' et coupe la chaîne au caractère '%' puis sélectionne le deuxième tronçon (-f2), il existe aussi (-f2-3, -f2-4) etc. | remplacer les caractères // par https:// >> copier la chaîne dans le fichier projet.lisence
ligne 9 : mêmes remarques que précédemment par sélection du bas de page en français avec licence.
ligne 10 : ajout de la chaîne projet.lisense au fichier projet.sclt
ligne 11 : ajout à l'écran, peut être masqué à l'écran et copié dans un fichier projet.log.txt avec la commande ./ajouter_clt projet > projet.log.txt
Lignes 155-159
#O auteur(s) : echo -n ", auteur(s) : " >> $PageSclt cat $Projet/$ligne.str | grep -n -m 1 -i -e wgRelevantUserName | sed "s/\"/%/g" | cut -d'%' -f4 > $Projet/$ligne.auteur cat $Projet/$ligne.auteur >> $PageSclt cat $Projet/$ligne.auteur
La ligne 1 est un commentaire
La ligne 2 ajoute la chaîne de caractères , auteur(s) : au fichier projet.sclt
la ligne 3 trie la ligne qui contient wgRelevantUserName, la chaîne est coupée et la partie de la chaîne qui contient le nom de l'utilisateur est copiée dans le fichier projet.auteur
les lignes 4 et 5 copient respectivement le contenu du fichier projet.auteur dans le fichier projet.sclt, puis à la console.
Lancer les tests
modifier- fichier obtenu avec la commande ~/Annexer/ajouter_sclt LivreTest
cat LivreTest.sclt dans le répertoire du projet LivreTest
= Annexe = <references /> {{Nouvelle page imprimée}} == Contenus == <small> https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleUn https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleDeux https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ArticleTrois === Source de cette édition de version imprimable ou compilée === https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest </small> {{Nouvelle page imprimée}} == Sources licences et contributeurs des articles == 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><small> '''ArticleDeux''' , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632572 , ''licence : '', ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/ , ''auteur(s) : ''Goelette Cardabela '''ArticleTrois''' , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632573 , ''licence : '', ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/ , ''auteur(s) : ''Goelette Cardabela '''ArticleUn''' , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632571 , ''licence : '', ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/ , ''auteur(s) : ''Goelette Cardabela '''LivreTest''' , ''source : ''https://fr.wikibooks.org/w/index.php?oldid=632562 , ''licence : '', ''licence : ''https://creativecommons.org/licenses/by-sa/3.0/ , ''auteur(s) : ''Goelette Cardabela </small></small> {{Nouvelle page imprimée}}
Poursuivre avec le fichier de commandes « ajouter_scli »
modifierDans les articles on inclut des illustrations, des images, des photos, le but est d'extraire de ces articles; les liens vers ces fichiers, ainsi que les licences, auteurs, voire le chapitre ou le sous chapitre, afin de les retrouver dans les textes, faute de numéro de page.
Le fichier d'entête
modifierCe fichier doit être inclus dans le fichier de commandes ajouter_scli
#! /bin/bash
#P Nom du fichier de commandes : header ou header.sh
#P Syntaxe : "annexer <nom du livre>"
#P Exemple : "./annexer LivreTest" à la console pour les essais.
#P Ce fichier d'entête est commun aux fichiers de commandes annexer, lister, télécharger, ajouter_sclt, dans lesquels ils sont inclus.
#P Il doit être inclus dans le fichier de commandes ajouter_scli par la commande "source". Exemple : "source header.sh"
#P Date de création : 24 mars 2020
#P Modifié le : 12 avril 2020 par GC
#P Version sur WikiLivres le : 127 avril 2020
#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, 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
#T echo "Paramètre d'entrée : "$1
#T exit 2
#H tester la présence du paramètre de la ligne de commandes
if test -z "$1"
then echo "Erreur, pas de paramètre en entrée : le paramètre est \"${1}\" "
echo "Syntaxe de la commande : $0 <fichier>, (exemple : $0 LivreTest)"
echo " "
exit 1;
else echo "Projet : création de la page "$1.annexe" du livre : \"${1}\" "
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
echo "----------"
echo "Liste des pages et articles à analyser, 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
ls -al $Projet
echo "----------"
#H entrer dans la répertoire de travail.
cd $Projet
Annexes de Wikibooks
modifierPourquoi titrer Annexes_de_wikibooks plutôt que Annexes_de_wikilivres sur un site en français ?
Wikilivres peut désigner : * Wikibooks, un projet de la Wikimedia Foundation, aussi connu en français sous le pseudo « Wikilivres » * Wikilivres, un site web hébergeant des livres passés dans le domaine public (propriété intellectuelle) selon la loi canadienne.
Pourquoi « vouloir » créer une page Annexe aux livres de Wikibooks ?
* Cette page Annexe n'a d'intérêt que pour les livres publiés, elle est automatiquement créée lors des commandes à PediaPress. * Éditer et imprimer un livre par ses propres moyens peut avoir plusieurs raisons: être perfectionniste ou/et être déçu par la recomposition automatique des pages par PediaPress
Sommaire
modifier1 Sommaire 2 Genèse 2.1 Résumé introductif (mars-avril 2020) 2.2 Tests de faisabilité ( et tests des premiers modules ) 3 Développement des scripts en français 3.1 Premier programme ( Annexer ) 3.1.1 Version imprimable 3.1.2 Codes de l'application en français avec les manuels 3.1.3 Copier les codes sources avec la version imprimable 4 Développement international des scripts 4.1 Deuxième programme ( Annexer / Add_appendix ) 4.1.1 *** Copier les codes sources avec la version imprimable 4.1.2 Installations 4.1.2.1 Une première installation en version personnelle 4.1.2.2 Une deuxième installation en version administrateur 4.1.2.3 Une troisième installation en version tous-utilisateurs 4.1.2.4 Une dernière installation (Makefile) 4.1.2.5 Installation par paquets 5 Notion d'empaquetage 5.1 Exemple avec le paquet mkaddappendixdocu.deb 5.1.1 Généralités sur l'empaquetage Linux-ubuntu 5.1.1.1 Structure de l'archive bêta mkaddapendixdocu 5.1.1.2 mkaddapendixdocu 5.1.1.3 changelog.debian 5.1.1.4 copyright 5.1.1.5 changelog 5.1.1.6 README 5.1.1.7 postrm 5.1.1.8 control 5.1.1.9 postinst 5.1.1.10 ./empaqueter 5.1.1.11 ./installer 5.1.1.12 ./desinstaller 5.1.1.13 ./KONSOLE 5.1.1.14 Création de la structure 5.1.2 script pour faciliter la création de mk-addapendix-docu.bash 6 Dépôt d'un paquet linux-ubuntu sur un site de confiance 7 Références
Genèse
modifierC'est arrivé comme ça.
Créer une application pour générer automatiquement la page Annexe des livres de Wikibooks, semblable à celle produite par PediaPress.
PediaPress utilise une application spéciale accessible par les utilisateurs sur le panneau gauche de l'éditeur:
Créer une compilation
L'idée est d'utiliser le contenu édité de cette compilation.
La page de compilation sur le site français a cette forme [[Wikilivres:Compilations/TITRE DU LIVRE]]
- Exemple de page:
Wikilivres:Compilations/Faire_fleurir_le_sel
- Exemple de contenu de page: ce sont des liens vers des sous-pages
:[[Faire fleurir le sel/Couverture|Faire sa fleur de sel]] :[[Faire fleurir le sel/Introduction|Introduction]] :[[Faire fleurir le sel/Préparation|Préparation]] :[[Faire fleurir le sel/Filtrer et aseptiser|Filtrer et aseptiser]] :[[Faire fleurir le sel/Récolter|Récolter]] [[Catégorie:Compilations|Faire fleurir le sel]] [[Catégorie:Versions imprimables]] [[Catégorie:Minilivres]] [[Catégorie:Brochure]]
Pour créer le livre il faut lancer un terminal et créer un répertoire que l'on a appelé "Annexe" dans notre expérience. Ensuite il faut créer l'application qui va décortiquer les sous-pages du livre pour en extraire tous les renseignements utiles à l'édition de l'Annexe du livre.
Wikibooks se veut accessible à tous. Le langage de programmation que nous avons choisi est le Bash sous linux ubuntu.
Linux ubuntu est installable en auto-démarrage (autoboot) sur une clé usb.
Résumé introductif (mars-avril 2020)
modifierIt is good to started learning and writing a program in bash during this containment period. (introduction trancrite en anglais)
Cette étude a été initiée avec l'article Auto-éditer un wikilivre/Auto-référencer, il décrit en détail la progression de la programmation.
Français:
est un peu comme un puzzle. On croit que la commande que l'on vient d'écrire va marcher immédiatement, mais non ! Au bout de quelque temps on donne sa langue au chat et on va interroger les forums en espérant trouver une solution; ne serait-ce que pour comprendre la différence entre les parenthèse et double parenthèses : (...) ((...)) [...] {...} toutes ces parenthèses se ressemblent et n'expriment pas le même concept.
Voila donc un bon passe-temps pour remplir des journées vides de sens.
English:
It's kind of like a puzzle. We believe that the command line we just wrote will work immediately, but no! After some time we will go to the forums hoping to find a solution; even if hope only to understand the difference between brackets and double brackets: (...) ((...)) ... {...} all these brackets are similar and do not express the same concept.
It is a good pastime to fill empty days of meaning.
Les codes informatiques de ces articles ne sont pas prévus pour être intégrés dans un livre. Ils sont présentés pour être expliqués, voire corrigés. Chacun pourra les copier et faire des essais personnels d'encodage. L'encodage paraît facile, chaque ligne un peu compliquée demande parfois des heures de travail; alors, ne changez pas ces codes sans être absolument certain que cela en vaut la peine.
Les documents imprimables de ces articles, en Version imprimable ou Version compilée, sont (ou seront) imprimés sans le code informatique. Il en est (en sera) de même pour les manuels html et man de linux avec la version internationalisée du programme Annexer ou Annex ou encore AddAppendix; le nom pertinent n'est pas encore trouvé. [3]
Tests de faisabilité ( et tests des premiers modules )
modifier- Choix du langage de programmation, et tests des premiers modules.
Auto référencer Version imprimable (36 pages) [5]
Développement des scripts en français
modifierPremier programme ( Annexer )
modifier- Avec les tests de tous les modules
Version imprimable
modifier- Cette version du logiciel Annexer reprend les scripts et complémente le livre pour être exploitable tel quel.
- Ce logiciel de démonstration est téléchargeable par ftp
Codes de l'application en français avec les manuels
modifierAuto-éditer_un_wikilivre#codes_de_l'application_en_français_avec_les_manuels[7]
Copier les codes sources avec la version imprimable
modifierAuto-éditer_un_wikilivre#Copier_les_codes_sources_avec_la_version_imprimable [8]
Développement international des scripts
modifier- Les messages et les manuels doivent être en anglais et traduits en français et autres langues.
- Les codes sources sont habituellement écrits en anglais afin d'assurer la maintenance universelle.
Deuxième programme ( Annexer / Add_appendix )
modifier- Au mois de mai 2020 l'idée de partager cette application dans la communauté internationale s'est imposée.
- Dans un premier temps
- Les modules de programmes ont les mêmes que ceux du programme Annexer. Ils ont été réécrits pour être utilisés à la fois en langue française avec Annexer et anglaise avec Add_appendix dans les versions ultérieures la version double sera probablement être supprimée lorsque les traductions auront été effectuées.
- Dans un deuxième temps
- Les modules pré-annex, annexer et addapendix ont été ajoutés et la librairie annex.lib s'est étoffée.
- Avec le programme bêta
- Nous avons voulu produire des scripts selon la tradition de Wikibooks:
- qu'ils soient pédagogiques (? pas facile)
- qu'ils soient publics et lisibles, donc sans compilations pour leurs exécutions, cependant nous voulons qu'ils soient utilisables sur d'autres systèmes d'exploitation. Seuls les scripts destinés aux administrateurs peuvent être compilés et copiés dans sbin avec shc pour linux ou exécutables sous windows avec mingw
- que les messages soient traduisibles avec gettext dans toutes les langues et adaptables pour d'autres systèmes d'exploitation.
- Les scripts seront produits sous linux ubuntu
*** Copier les codes sources avec la version imprimable ***
modifierInstallations
modifier- Exception faite pour l'installation par paquets, ces installations sont fastidieuses.
- Il est possible d’installer ce logiciel sous Windows avec Cygwin
Une première installation en version personnelle
modifier- users_install_annex.sh: permet de créer la structure de base des répertoires. et de suivre les indications de l’installation_utilisateur:
Une deuxième installation en version administrateur
modifier- On fait de mème avec le script admin_install_annex.sh cette installation plus compliquée est plutôt destinées aux familiers de la programmation sous Linux.
installation administrateur[11] script à revoir
Une troisième installation en version tous-utilisateurs
modifier- Cette installation est possible avec '
install_annex.sh' script à revoir après une expérience avec une des installations précédentes. - Le nombre de répertoires est réduit dans le répertoire utilisateur. Le logiciel est entièrement installé dans le système Linux.
- dans: /usr/local/bin, /usr/local/lib /usr/local/sbin, /usr/share/man, /usr/share/locale etc.
Une dernière installation (Makefile)
modifier- Installation avec le Makefile_d'installation_de_Add-appendix_proposé_aux_tests[12]. Cette installation remplace avantageusement la troisième installation.
Désinstallation
modifier- La désinstallation concerne tous les logiciels énumérés ci-dessus
Note: La désinstallation des paquets est incluse dans les paquet et ne nécessite pas une désinstallation séparée
- Désinstallation du logiciel Annexer (juin 2020)
if [ /usr/share/man/fr.UTF-8/man1/annex.1.gz -ot /usr/share/man/fr.UTF-8/man1/annexer.1.gz ]; then sudo rm /usr/share/man/fr.UTF-8/man1/annex.1.gz; fi if test -e /usr/share/man/fr.UTF-8/man1/annexer.1.gz; then sudo rm /usr/share/man/fr.UTF-8/man1/annexer.1.gz; fi gzip ~/Annexer rm -rf ~/Annexer
- Désinstallation du logiciel Add_appendix (Novembre 2021)
if test -e /usr/share/man/fr.UTF-8/man1/annexer.1.gz; then sudo rm /usr/share/man/fr.UTF-8/man1/annexer.1.gz; fi if test -e /usr/share/man/fr.UTF-8/man1/annex.1.gz; then sudo rm /usr/share/man/fr.UTF-8/man1/annex.1.gz; fi if test -e /usr/share/man/man1/annex.1.gz; then sudo rm /usr/share/man/man1/annex.1.gz; fi gzip ~/Add_Appendix rm -rf ~/Add_appendix
- Désinstallation de l'installation par Makefile
- Le Makefile contient tous les fichiers d'installation et doit inclure sa propre désinstallation « ./désinstall »
Installation par paquets
modifier- C'est l'installation facile sous linux. Les paquets .deb et .rpm et sont en cours d'écriture, en fin décembre 2021 pour la version bêta-1.
Notion d'empaquetage
modifierExemple avec le paquet mkaddappendixdocu.deb
modifier- Apprendre à empaqueter
Généralités sur l'empaquetage Linux-ubuntu
modifier- Exemple pour la compréhension; avec le système d'exploitation linux-ubuntu.
- Cet exemple copié de edeulo.free.fr/wiki/index.php/Les_paquets
Structure de l'archive bêta mkaddapendixdocu
modifierExemple d'un empaquetage simple mkaddappendixdocu.deb
- les <archives> doivent avoir la forme: <executable>-<version>.tar.gz en minuscules pour les dépôts ppa
- Notre archive sera nommée mkaddappendixdocu.tar.gz sans référence de version.
- Le préfixe mk et la version n'ont pas d'importance pour cet exercice de création personnelle.
- Création du paquet utilisateur en local: mkaddappendixdocu.deb
- Cette structure, dans un premier temps, crée uniquement la documentation des fichiers sources
- Les répertoires seront ensuite complétés pour créer le paquet final
- Les fichiers sources se trouvent initialement dans le répertoire /usr/local/src/Add_appendix/
- le répertoire './' est un répertoire de l'utilisateur qui peut être, par exemple ~/packaging/addappendix/.
- On se place dans le répertoire de production des paquets en exemple: (copier, coller, exécuter dans un terminal)
- copier (Ctrl-c), coller dans le terminal (Ctrl-shift-v), exécuter (Retour-chariot).
install -d ~/packaging/addappendix/mkaddappendixdocu; cd ~/packaging/addappendix; ls
- ~/packaging/addappendix doit contenir nos utilitaires et les fichiers d'installation mkaddapendixdocu/*.
- './mkaddapendixdocu' est appelé répertoire origine ou répertoire racine de notre paquet en projet.
- Tout ce qui nous intéresse pour la construction du paquet doit se trouver dans ce répertoire.
- Tous les exécutables qui nous permettent d'empaqueter, installer, désinstaller le paquet sont dans ~/packaging/addappendix/ (en exemple)
* Répertoires: ./mkaddapendixdocu/usr ./mkaddapendixdocu/usr/share ./mkaddapendixdocu/usr/share/doc ./mkaddapendixdocu/usr/share/doc/changelog.debian -fichier à créer ./mkaddapendixdocu/usr/share/doc/copyright - fichier à créer ./mkaddapendixdocu/usr/share/doc/changelog - fichier à créer ./mkaddapendixdocu/usr/share/doc/README - fichier à créer ./mkaddapendixdocu/usr/local ./mkaddapendixdocu/usr/local/bin - répertoire qui recevra notre exécutable (à créer) pour générer la documentation ./mkaddapendixdocu/usr/local/src/Add_appendix - répertoire qui contient les sources à documenter ./mkaddapendixdocu/DEBIAN ./mkaddapendixdocu/DEBIAN/postrm -fichier à créer ./mkaddapendixdocu/DEBIAN/control -fichier à créer ./mkaddapendixdocu/DEBIAN/postinst -fichier à créer * Utilitaires: ./empaqueter - pour créer le paquet ./installer - pour installer l'application ./desinslaller - pour désinstaller le paquet ./KONSOLE - utilitare pour créer une konsole locale * Fichier créé à l'empaquetage: ./mkaddappendixdocu.deb * Remarques sur l'utilitaire de la logithèque: ./remarques
mkaddapendixdocu
modifier- Crée la documentation des fichiers de programmes
#!/bin/bash
#H Header of executable mkaddappendixdocu
#H File mkaddappendixdocu writed by wiki-user Goelette Cardabela (2024_09-21)
#H Create any simple package to create documentation for Add_appendix app in bash programming language
#H
#O organizational chart of mkaddappendixdocu shellsources files R:2021-09-25
VERSION=210925
#O Test if pwd is the good directory, if not found exit -1
if test -d ./mkaddappendixdocu; then echo "Create Add_appendix documentation"; else echo "Directory ./mkaddappendixdocu not found exit -1"; exit -1; fi
#O Remarks: all sources files are in /usr/local/src/Add_appendix
#O Create ./maintainers-documentation/src directory if not exist in user directory
install -d ./maintainers-documentation/src
#O Copy all sources files in ./maintainers-documentation/src/ if exist
if test -d /usr/local/src/Add_appendix
then
if test -e /usr/local/src/Add_appendix/annex.sh; then cp /usr/local/src/Add_appendix/*.sh ./maintainers-documentation/src/.; else echo "annex.sh not found in /usr/local/src/Add_appendix exit -1"; exit -1; fi
else echo "/usr/local/src/Add_appendix not found exit -1"
fi
#O Create project file only with extension .sh
ls -1 ./maintainers-documentation/src/*.sh > ./maintainers-documentation/addappendixdocumentation.prj
#O Make headers file documentation; style shell, overwire, text only
echo "Make maintainers-documentation/sources-headers.txt"
mkd -Sjwt H ./maintainers-documentation/addappendixdocumentation.prj ./maintainers-documentation/sources-Headers.txt
echo "Make maintainers-documentation/sources-Documentation.txt"
mkd -Sjwt D ./maintainers-documentation/addappendixdocumentation.prj ./maintainers-documentation/sources-Documentation.txt
echo "Make maintainers-documentation/sources-Organization_charts.txt"
mkd -Sjnwt O ./maintainers-documentation/addappendixdocumentation.prj ./maintainers-documentation/sources-Organization_charts.txt
echo "Make maintainers-documentation/sources-Programmers-doc.txt"
mkd -Sjnwt P ./maintainers-documentation/addappendixdocumentation.prj ./maintainers-documentation/sources-Programmers-doc.txt
echo "Make maintainers-documentation/sources-Programmers-warnings-doc.txt"
mkd -Sjnwt w ./maintainers-documentation/addappendixdocumentation.prj ./maintainers-documentation/sources-Programmers-warnings-doc.txt
#O Print the result at screen
echo " mkaddappendidocu result of test:"
ls -l ./maintainers-documentation
#D Documentation in english of mkaddappendixdocu shell files R:2021-09-25
#D This executable script is included in the pachage mkaddappendixdocu.deb and
#D create /usr/local/src/Add_appendix/*.sh sources files documentation.
#D This file is put to /usr/local/bin directotory and is permanently accessible
#D The documentation files can be transferred to:
#D /usr/local/share/doc/maintainers-documentation/sources-*
#D
#F Documentation en français du script mkaddappendixdocu R:2021-09-25
#F Ce script exécutable fait partie du paquet ubuntu mkaddappendixdocu.deb et
#F il crée la documentation des fichiers sources du programme Add_appendix
#F Cet exécutable est placé dans le répertoire /usr/local/bin et est accessible
#F en permanence.
#F La documentation peut être transférée dans /usr/local/share/doc/...
#F
#w warnings of mkaddappendixdocu shell sources files R:2021-09-25
#w The documentation of this script can be created with this code:
#w cat /usr/local/bin/mkaddappendixdocu | grep -e "#D" -e "#F" > ./mkaddappendixdocu.docu
#w sudo cp mkaddappendixdocu.docu /usr/local/share/doc/.; rm ./mkaddappendixdocu.docu
#w you can write this two lines in the 'postinst' file.
changelog.debian
modifier- Fichier nécessaire à la création du paquet, peut être vide.
- copy (Ctrl-c) paste in terminal or konsole (Ctrl-shift-v) and execute
echo "First version 1.0 (2021-09-21)" > ./mkaddappendixdocu/usr/share/doc/changelog.debian
copyright
modifier- Fichier nécessaire à la création du paquet, peut être vide.
- copy (Ctrl-c) paste in terminal or konsole (Ctrl-shift-v) execute
echo "First version 1.0 (2021-09-21) (c) Demo <demo.com>" > ./mkaddappendixdocu/usr/share/doc/copyright
changelog
modifier- Fichier nécessaire à la création du paquet, peut être vide.
echo "First version 1.0 (2021-09-21)" > ./mkaddappendixdocu/usr/share/doc/changelog
README
modifier- Fichier utile à la construction du paquet.
echo "This demo command is writed to create a self debian package." > ./mkaddappendixdocu/usr/share/doc/README
postrm
modifier- Script exécuté après la suppression du paquet (si nécessaire)
- Ce script peut mettre à jour des données comme cat (catman), whatis, et autres nettoyages
echo "#!/bin/bash" > $HOME/mkaddappendixdocu/DEBIAN/postrm echo 'echo " If this message appears then mkAdd_appendix package is removed "' >> ./mkaddappendixdocu/DEBIAN/postrm echo >> $HOME/mkaddappendixdocu/DEBIAN/postrm
control
modifier- fichier nécessaire à la construction du paquet.
echo "Package: mkaddappendixdocu" > ./mkaddappendixdocu/DEBIAN/control echo "Version: 1.0" >> ./mkaddappendixdocu/DEBIAN/control echo "Section: utils" >> ./mkaddappendixdocu/DEBIAN/control echo "Priority: optional" >> ./mkaddappendixdocu/DEBIAN/control echo "architecture: all" >> ./mkaddappendixdocu/DEBIAN/control echo "Depends: bash, mkd, shc" >> ./mkaddappendixdocu/DEBIAN/control echo "Maintainer: Wikibooks user:Goelette_Cardabela" >> ./mkaddappendixdocu/DEBIAN/control echo "Description: Install Add_appendix program to create Appendix or Annexe for wikibooks." >> ./mkaddappendixdocu/DEBIAN/control echo "Homepage: https://fr.wikibooks.org/wiki/Annexes_de_wikibooks" >> ./mkaddappendixdocu/DEBIAN/control echo >> ./mkaddappendixdocu/DEBIAN/control
- Le classement des paquets pour la recherche des programmes doit être choisi dans une des sections:
admin, devel, doc, graphics, libs, misc, net, otherof, pyton, shell, sound, text, utils, x11
postinst
modifier- Script exécuté après la création du paquet (si nécessaire)
- Cet exécutable peut mettre à jour 'cat' (catman), whatis et toute autre action.
echo '#!/bin/bash' > ./mkaddappendixdocu/DEBIAN/postinst echo 'echo " Use mkaddappendixdocu to create the Add_appendix documentation "' >> ./mkaddappendixdocu/DEBIAN/postinst echo 'echo " Type mkaddappendixdocu in your terminal or konsole "' >> ./mkaddappendixdocu/DEBIAN/postinst echo' echo " See maintainers-documentation in your home directory "' >> ./mkaddappendixdocu/DEBIAN/postinst
./empaqueter
modifier- in your $HOME directory:
echo "#!/bin/bash" > ./empaqueter echo "fakeroot chmod 755 mkaddappendixdocu/usr/local/bin/mkaddappendixdocu" >> ./empaqueter echo "fakeroot chmod 755 mkAdd_appendix/DEBIAN/post*" >> ./empaqueter echo "#fakeroot chmod 755 mkAdd_appendix/DEBIAN/pre*" >> ./empaqueter; - preinst n'est pas utilisé ici echo "fakeroot rm *.deb" >> ./empaqueter echo "fakeroot dpkg-deb --build mkAdd_appendix" >> ./empaqueter
./installer
modifierecho "#!/bin/bash" > ./installer echo "sudo dpkg -i mkaddappendixdocu.deb" >> ./installer
./desinstaller
modifierecho "#!/bin/bash" > ./desinstaller echo "sudo dpkg --remove mkAdd_appendix" >> ./desinstaller echo "ou:" >> ./desinstaller echo "sudo dpkg -- purge mkAdd_appendix" >> ./desinstaller
./KONSOLE
modifier- Pour faciliter le travail dans le répertoire de travail courant
echo "#!/bin/bash" > ./KONSOLE echo 'echo -e "\033[1;32mclick on New-line to start the Konsole\033[0m"' >> ./KONSOLE echo 'echo -e "\033[1;32mclick on Ctrl-C to exit the Konsole\033[0m"' >> ./KONSOLE echo "tput sgr0 # Reset text attributes to normal without clear" >> ./KONSOLE echo "read pwd" >> ./KONSOLE echo "pwd" >> ./KONSOLE echo "echo $pwd" >> ./KONSOLE echo "tput sgr0 # Reset text attributes to normal without clear" >> ./KONSOLE echo "/usr/bin/konsole background-mode --workdir pwd dir" >> ./KONSOLE echo "read" >> ./KONSOLE
Création de la structure
modifier- Nous voulons créer un exécutable mkaddappendixdocu pour générer la documentation des scripts de l'application Add_appendix.
- Pour cela nous allons apprendre à construire un paquet ubuntu de nom mkaddappendixdocu.deb, simple, personnel, sans référence de version.
- Ainsi quelle que soit la version de l'application Add_appendix on pourra générer la documentation que l'on trouvera dans le répertoire /usr/local/share/doc/maintainers-documentation/sources-add-appendix-*. Pour que cet exécutable soit toujours valable il faut évidemment que les sources se trouvent toujours au même endroit, dans /usr/local/src/Add_appendix/*
- Lancer le terminal ou la konsole
- Entrer dans le répertoire racine de l'utilisateur cd
- Copier ce code ci après, le coller dans un éditeur de texte et l’enregistrer sous le nom mk-addapendix-docu.bash dans la racine de votre répertoire utilisateur.
- Changer le mode du fichier chmod 755 mk-addapendix-docu.bash
- Exécuter le code ./mk-addappendix-docu.bash Attention, ne confondez pas avec mkaddapendixdocu
- Copier le code, coller le code mkaddapendixdocu dans mk-addapendix-docu/usr/local/bin/.
- Copier le code empaqueter coller le dans le répertoire racine du paquet mk-addapendix-docu
- Faites de même avec installer, désinstaller, KONSOLE
- Copier, coller tous les fichiers sources dans le répertoire mk-addapendix-docu/usr/local/src/Add_appendix
- liste des sources à télécharger dans le répertoire des sources Add_appendix:
add_sclic.sh, add_sclipco.sh, add_sclipwb.sh, add_sclt.sh, annex.sh, download.sh, en_sclic.inc.sh, en_sclipco.inc.sh, en_sclipwb.inc.sh, en_sclt.inc.sh, fr_sclic.inc.sh, fr_sclipco.inc.sh, fr_sclipwb.inc.sh, fr_sclt.inc.sh, header.inc.sh, list.sh, pre-annex.sh, scli.inc.sh
script pour faciliter la création de mk-addapendix-docu.bash
modifier- Ce script est destiné à faciliter la création de la structure du paquet plutôt que le copier-coller. (Il ne fait pas partie du paquet.)
- Il faut cependant vérifier les codes, voire les modifier selon l'usage que l'on veut obtenir.
#!/bin/bash
#H File mkaddappendixdocu.bash in ~/packaging/addappendix directory
#D Documentation for mkaddappendixdocu.bash
#D This script install directories and files to create the linux ubutu simple
#D personal package mkaddappendixdocu.deb
# install -d ~/packaging/addappendix/mkaddapendixdocu; cd ~/packaging/addappendix; ls
clear
VERSION=210927
# cd in ~/packaging/addappendix directory
cd ~/packaging/addappendix
echo "Directories creation for package:"
mkdir ./mkaddappendixdocu
mkdir ./mkaddappendixdocu/usr
mkdir ./mkaddappendixdocu/usr/share
mkdir ./mkaddappendixdocu/usr/share/doc
echo "Creation of changelog.debian."
echo "First version 1.0 (2021-09-21)" > ./mkaddappendixdocu/usr/share/doc/changelog.debian
echo >> ./mkaddappendixdocu/share/doc/changelog.debian
echo "Control: ";cat ./mkaddappendixdocu/share/doc/changelog.debian
echo "----"
echo "Creation of copyright."
echo "First version 1.0 (2021-09-21) (c) user:Goelette_Cardabela in wikibooks" > ./mkaddappendixdocu/share/doc/copyright
echo >> ./mkaddappendixdocu/share/doc/copyright
echo "Control: ";cat ./mkaddappendixdocu/share/doc/copyright
echo "----"
echo "Creation of changelog."
echo "First version 1.0 (2021-09-21)" > ./mkaddappendixdocu/share/doc/changelog
echo >> ./mkaddappendixdocu/share/doc/changelog
echo "Control: ";cat ./mkaddappendixdocu/share/doc/changelog
echo "----"
echo "Creation of README."
echo "This demo command is writed to create a self debian package." > ./mkaddappendixdocu/share/doc/README
echo >> ./mkaddappendixdocu/share/doc/README
echo "Control: ";cat ./mkaddappendixdocu/share/doc/README
echo "----"
echo "Directories creation."
mkdir ./mkaddappendixdocu/usr/local
mkdir ./mkaddappendixdocu/usr/local/bin
mkdir ./mkaddappendixdocu/usr/local/share
mkdir ./mkaddappendixdocu/usr/local/share/doc
mkdir ./mkaddappendixdocu/DEBIAN
echo "Control: ";ls -dl ./mkaddappendixdocu/usr/local ./mkaddappendixdocu/usr/local/bin \
./mkaddappendixdocu/usr/local/share ./mkaddappendixdocu/usr/local/share/doc \
./mkaddappendixdocu/DEBIAN
echo "----"
echo "Creation of postrm."
echo "#!/bin/bash" > ./mkaddappendixdocu/DEBIAN/postrm
echo 'echo " If this message appears then mkAdd_appendix package is removed "' >> ./mkaddappendixdocu/DEBIAN/postrm
echo >> ./mkaddappendixdocu/DEBIAN/postrm
echo "Control: ";cat ./mkaddappendixdocu/DEBIAN/postrm
echo "----"
echo "Creation of control."
echo "Package: mkaddappendix" > ./mkaddappendixdocu/DEBIAN/control
echo "Version: 1.0" >> ./mkaddappendixdocu/DEBIAN/control
echo "Section: utils" >> ./mkaddappendixdocu/DEBIAN/control
echo "Priority: optional" >> ./mkaddappendixdocu/DEBIAN/control
echo "architecture: all" >> ./mkaddappendixdocu/DEBIAN/control
echo "Depends: bash, mkd, shc" >> ./mkaddappendixdocu/DEBIAN/control
echo "Maintainer: Wikibooks user:Goelette_Cardabela" >> ./mkaddappendixdocu/DEBIAN/control
echo "Description: Install Add_appendix program to create Appendix or Annexe for wikibooks." >> ./mkaddappendixdocu/DEBIAN/control
echo "Homepage: https://fr.wikibooks.org/wiki/Annexes_de_wikibooks" >> ./mkaddappendixdocu/DEBIAN/control
echo >> ./mkaddappendixdocu/DEBIAN/control
echo "Control: ";cat ./mkaddappendixdocu/DEBIAN/control
echo "----"
echo "Creation of postinst."
echo "#!/bin/bash" > ./mkaddappendixdocu/DEBIAN/postinst
echo 'echo " Use mkAdd_appendix in your working directory "' >> ./mkaddappendixdocu/DEBIAN/postinst
echo 'echo " Then type mkAdd_appendix in your terminal or konsole "' >> ./mkaddappendixdocu/DEBIAN/postinst
echo 'echo " See manual man man1 Add_appendix and , or, mkAdd_appendix "' >> ./mkaddappendixdocu/DEBIAN/postinst
echo >> ./mkaddappendixdocu/DEBIAN/postinst
echo "Control: ";cat ./mkaddappendixdocu/DEBIAN/postinst
echo "----"
# Utilitaires:
echo -e "\033[33mCreation of ./packaging.\033[0m"
echo "#!/bin/bash" > ./packaging
echo "fakeroot chmod 755 mkAdd_appendix/usr/local/bin/mkdocu.bash" >> ./packaging
echo "fakeroot chmod 755 mkAdd_appendix/DEBIAN/post* " >> ./packaging
echo "#fakeroot chmod 755 mkAdd_appendix/DEBIAN/pre* " >> ./packaging
echo "fakeroot rm *.deb" >> ./packaging
echo "fakeroot dpkg-deb --build mkAdd_appendix" >> ./packaging
echo >> ./packaging
echo "Control:";cat ./packaging
chmod 755 ./packaging
echo "----"
echo "Creation of ./install."
echo "#!/bin/bash" > ./install
echo "sudo dpkg -i mkAdd_appendix.deb" >> ./install
echo >> ./install
cat ./install
chmod 755 ./install
echo "----"
echo "Creation of ./desinslall."
echo "#!/bin/bash" > ./desinstall
echo "sudo dpkg --remove mkAdd_appendix" >> ./desinstall
echo "# ou:" >> ./desinstall
echo "# sudo dpkg --purge mkAdd_appendix" >> ./desinstall
echo >> ./desinstall
echo "Control: ";cat ./desinstall
chmod 755 ./desinstall
echo "----"
echo "Creation of ./KONSOLE."
if test -e /usr/bin/konsole
then
echo "#!/bin/bash" > ./KONSOLE
echo 'echo -e "\033[1;32mclick on New-line to start the Konsole\033[0m"' >> ./KONSOLE
echo 'echo -e "\033[1;32mclick on Ctrl-C to exit the Konsole\033[0m"' >> ./KONSOLE
echo "tput sgr0 # Reset text attributes to normal without clear" >> ./KONSOLE
echo "read pwd" >> ./KONSOLE
echo "pwd" >> ./KONSOLE
echo "echo $pwd" >> ./KONSOLE
echo "tput sgr0 # Reset text attributes to normal without clear" >> ./KONSOLE
echo "/usr/bin/konsole background-mode --workdir pwd dir" >> ./KONSOLE
echo "read" >> ./KONSOLE
echo >> ./KONSOLE
echo "Control: ";cat ./KONSOLE
chmod 755 ./KONSOLE
else
echo -e '\e|'31';'01'm' "not 'start in a terminal'"
echo "/usr/bin/konsole is not found, execute 'sudo apt install konsole' to install."
fi
echo "----"
echo "Creation of .remarques"
echo "#!/bin/bash" > ./remarques
echo "echo 'à compléter'" >> ./remarques
echo >> ./remarques
echo "Control: ";cat ./remarques
chmod 755 ./remarques
echo "----"
echo -e "\033[1;31mNe pas oublier de placer le script shell mkaddappendixdocu dans le répertoire mkaddappendixdocu/usr/local/bin/. et de le rendre exécutable.\033[0m"
Dépôt d'un paquet linux-ubuntu sur un site personnel de confiance (PPA)
modifierLa finalité se trouve dans ce Wikilivre technique avec la construction du paquet addappendix
Références
modifier- ↑ https://korben.info/installer-shell-bash-linux-windows-10.html
- ↑ http://montefiore.ulg.ac.be/~nvecoven/ci/files/tuto_bash/tuto_bash.html
- ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Résumé_introductif
- ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer
- ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer/Version_imprimable
- ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_orignale)/Version_imprimable
- ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre#codes_de_l'application_en_français_avec_les_manuels]]
- ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre#Copier_les_codes_sources_avec_la_version_imprimable
- ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)/Version_imprimable
- ↑ https://fr.wikibooks.org/w/index.php?title=Annexes_de_wikibooks/installation_utilisateur
- ↑ https://fr.wikibooks.org/wiki/Annexes_de_wikibooks/installation_administrateur
- ↑ https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)#Makefile_d'installation_de_Add-appendix_proposé_aux_tests