"Conversion README en markdown"

This commit is contained in:
Doug Le Tough 2017-07-21 12:00:45 +02:00
parent c7a72add50
commit 0ea09f0dcf

185
README.md
View File

@ -39,21 +39,21 @@ en découlent.
Sous l'arborescence ${NC_EXPL_ROOT} on trouve les dossiers suivants : Sous l'arborescence ${NC_EXPL_ROOT} on trouve les dossiers suivants :
+-----------------+-----------------------------------------------------------------------------------------------+ +-----------------+-----------------------------------------------------------------------------------------------+
| Dossier | Description | | Dossier | Description |
+-----------------+-----------------------------------------------------------------------------------------------+ +-----------------+-----------------------------------------------------------------------------------------------+
| {Racine}/bin | Contient les binaires (scripts Bash) | | {Racine}/bin | Contient les binaires (scripts Bash) |
| {Racine}/conf | Contient les fichiers de configuration des scripts, ainsi que du socle | | {Racine}/conf | Contient les fichiers de configuration des scripts, ainsi que du socle |
| {Racine}/cpt | Contient les fichiers de comtpe-rendus génerés par les script (purge auto, 8 jours par défaut)| | {Racine}/cpt | Contient les fichiers de comtpe-rendus génerés par les script (purge auto, 8 jours par défaut)|
| {Racine}/dat | Contient les fichiers de données gérés par les scripts | | {Racine}/dat | Contient les fichiers de données gérés par les scripts |
| {Racine}/hist | Contient l'historique d'exécution des scripts (pas de purge) | | {Racine}/hist | Contient l'historique d'exécution des scripts (pas de purge) |
| {Racine}/lib | Contient les bibliothèques chargées par le socle | | {Racine}/lib | Contient les bibliothèques chargées par le socle |
| {Racine}/log | Contient les fichiers de logs d exécution des scripts (purge auto , 8 jours par défaut ) | | {Racine}/log | Contient les fichiers de logs d exécution des scripts (purge auto , 8 jours par défaut ) |
| {Racine}/man | Contient les fichiers d'aide des scripts pour l'utilitaire "man" | | {Racine}/man | Contient les fichiers d'aide des scripts pour l'utilitaire "man" |
| {Racine}/mod | Contient les fichiers modèles (templates) à usage des scripts | | {Racine}/mod | Contient les fichiers modèles (templates) à usage des scripts |
| {Racine}/msg | Contient les fichiers de messages des scripts utilisés par la bibliothèque "fct_erreur" | | {Racine}/msg | Contient les fichiers de messages des scripts utilisés par la bibliothèque "fct_erreur" |
| {Racine}/tmp | Contient les fichiers temporaires des scripts | | {Racine}/tmp | Contient les fichiers temporaires des scripts |
+-----------------+-----------------------------------------------------------------------------------------------+ +-----------------+-----------------------------------------------------------------------------------------------+
Note : Sous chaque dossier vous trouverez un fichier texte lisezmoi.txt decrivant l'usage du répertoire. Note : Sous chaque dossier vous trouverez un fichier texte lisezmoi.txt decrivant l'usage du répertoire.
@ -135,14 +135,15 @@ Remarque : Les variables SH_SILENCE et SH_NIV_DEBUG sont controlées par les opt
si la gestion des options a été activée. si la gestion des options a été activée.
III - Utilisation du socle bash ## III - Utilisation du socle bash
-------------------------
Cette partie decrit sommairmement les quelques regles d usage pour ecrire un script Bash sous le socle DTSI Cette partie decrit sommairmement les quelques regles d usage pour ecrire un script Bash sous le socle DTSI
Ceci ne concerne pas les script Ruby qui ne sont pas pris en charge par le socle decrit ici. Ceci ne concerne pas les script Ruby qui ne sont pas pris en charge par le socle decrit ici.
### 1 - Cartouche
Les scripts doivent commencer par le cartouche ci-dessous :
1 - Cartouche
Les scripts doivent commencer par le cartouche ci-dessous :
+----------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+
| | | |
| #!/bin/bash | | #!/bin/bash |
@ -188,52 +189,56 @@ III - Utilisation du socle bash
| | | |
+----------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+
Note : Les lignes commencant par 2 "#" sont utilisees pour generer l aide, leur maintient est donc necessaire Note : Les lignes commençant par 2 "#" sont utilisees pour generer l'aide, leur maintient est donc nécéssaire
pour garantir la fiabilite de l information. Ce sont ces lignes, qui sont lues lors de l utilisation de pour garantir la fiabilité de l'information. Ce sont ces lignes, qui sont lues lors de l'utilisation de
l'option par defaut "-h". l'option par defaut "-h".
1.1 Elements du cartouche ### 1.1 Elements du cartouche
1.1.1 Meta-donnees
- <Action> : peut prendre les valeurs suivantes -> cre, ano, evo, typo
cre : Creation du script.
evo : Evolution du script -> Ajout de nouvelles fonctionnalites, Amelioration du code.
ano : Correction du code suite a un comportement inattendu.
typo : Ajout de commentaires, de texte ou correction gramatical sans influence sur le code.
- <Auteur> : <Prenom> <Nom> #### 1.1.1 Meta-données
- <Version> : Format x.y.z <Action> : peut prendre les valeurs suivantes -> cre, ano, evo, typo
Pour le suivie des versions on utilisera le versionnement semantique (voir paragraphe III-1.2). * cre : Création du script.
* evo : Évolution du script -> Ajout de nouvelles fonctionnalités, Amélioration du code.
* ano : Correction du code suite à un comportement inattendu.
* typo : Ajout de commentaires, de texte ou corrections gramaticales sans influence sur le code.
1.1.2 Paragraphe <Auteur> : <Prenom> <Nom>
- Mise a jour : Ce paragraphe est utilise pour suivre l evolution des versions. La derniere version en
vigueur doit etre reportee dans le premier paragraphe.
- Dependance : Permet de definir la liste ainsi que la version des scripts qui sont appeles. <Version> : Format x.y.z
Dans le cas d un changement cela permet de connaitre les scripts qui sont impactes. Pour le suivi des versions on utilisera le versionnement sémantique (voir paragraphe III-1.2).
Pour le moment aucun script n exploite cette meta-donnee.
Present pour un future usage.
- Liste des options : La declaration des options n est pas obligatoire. #### 1.1.2 Paragraphe
Si aucune declaration n est presente alors la librairie params.lib ne fait aucune action. * Mise a jour : Ce paragraphe est utilisé pour suivre l'evolution des versions. La dernière version en
Dans ce cas les options par defaut -h, -log, -hist, -cpt, -s et -dbg ne seront pas disponible. vigueur doit être reportée dans le premier paragraphe.
Si le script ne necessite pas d option mais que l on souhaite disposer des options par defaut, il * Dependance : Permêt de définir la liste ainsi que la version des scripts qui sont appelés.
faudras declarer une option bidon. ex: "# @OPT: f:bidon::::::" Dans le cas d'un changement cela permêt de connaître les scripts qui sont impactés.
Pour le moment aucun script n'exploite cette méta-donnée qui est presente pour un future usage.
Si la declaration existe alors le socle gerera les parametres en entree du script, ainsi que * Liste des options : La déclaration des options n'est pas obligatoire.
les options par defaut -h, -log, -hist, -cpt, -s et -dbg. Ces mots cle sont reserve et ne
peuvent pas etre utilise par le script.
La declaration est realise dans le paragraphe "Liste des options et arguments". Chaque Si aucune déclaration n'est présente alors la bibliothèque params.lib ne fait aucune action.
option est identifiee par l entete de ligne "# @OPT:" suivi de la description. Dans ce cas les options par défaut -h, -log, -hist, -cpt, -s et -dbg ne seront pas disponible.
La description consiste en une liste de parametres separes par ":"
Si le script ne nécessite pas d'option mais que l'on souhaite disposer des options par défaut, il
faudra déclarer une option bidon. ex: "# @OPT: f:bidon::::::"
Si la déclaration existe alors le socle gèrera les paramètres en entrée du script, ainsi que
les options par défaut -h, -log, -hist, -cpt, -s et -dbg. Ces mots clé sont reservés et ne
peuvent pas être utilisé par le script.
La déclaration est réalisée dans le paragraphe "Liste des options et arguments". Chaque
option est identifiée par l'entête de ligne "# @OPT:" suivi de la description.
La description consiste en une liste de paramètres séparés par ":"
<type>:<nom>:<var>:<nb_arg>:<def_val>:<OptE>:<OptI>:<ctl_val> <type>:<nom>:<var>:<nb_arg>:<def_val>:<OptE>:<OptI>:<ctl_val>
L ordre des parametre est fige et tous doivent etre presents. L'ordre des paramètre est figé et tous doivent etre présents.
8 champs sont obligatoires, soit 7 caracteres ":" (on ne compte pas le caracatere ":" suivant @OPT).
Exemple de declaration valide : 8 champs sont obligatoires, soit 7 caracteres ":" (on ne compte pas le caracatere ":" suivant @OPT).
Exemple de déclaration valide :
# @OPT: fb:h::0::: # @OPT: fb:h::0:::
# @OPT: fb:s::0::: # @OPT: fb:s::0:::
# @OPT: f:dbg:SH_NIV_DEBUG:0/1::: # @OPT: f:dbg:SH_NIV_DEBUG:0/1:::
@ -242,49 +247,47 @@ III - Utilisation du socle bash
# @OPT: oM:i:G_INSTANCE:1/1:ALL:dbid: # @OPT: oM:i:G_INSTANCE:1/1:ALL:dbid:
# @OPT: oM:pr:G_PR_NOM:1/1:sq,t,l: # @OPT: oM:pr:G_PR_NOM:1/1:sq,t,l:
<type> : Propriete de l attribu defini par l agregation des lettres suivantes * <type> : Propriété de l'attribu défini par l'aggrégation des lettres suivantes:
f -> Option falcultative * f -> Option falcultative
b -> Booleen * b -> Booléen
o -> Option obligatoire * o -> Option obligatoire
M -> Argument transforme en majuscule * M -> Argument transformé en majuscule
<nom> : nom de l option (sans le tiret) Attention le nom de l option est senssible a la casse. * <nom> : nom de l'option (sans le tiret). Attention le nom de l'option est sensible à la casse.
<var> : nom de la variable dans laquelle sera stockee le(s) argument(s) * <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
si plusieurs arguments alors un tableau sera initialise <var[n]> si plusieurs arguments alors un tableau sera initialisé <var[n]>
L index [n] commence a zero. L'index [n] commence à zero.
Le nombre d arguments effectivement passes a la commande est "${#<var>[*]}". Le nombre d'arguments éffectivement passés a la commande est "${#<var>[*]}".
L valeur max de l index [n] est "${#<var>[*]} - 1". La valeur max de l'index [n] est "${#<var>[*]} - 1".
<nb_arg> : nombre d arguments attendus de la forme "min/max", "min/", "max" ou "" * <nb_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou ""
si vide ou "0" alors l option est booleene. si vide ou "0" alors l'option est booléene.
la forme "min/" considere le nombre max non determine (infini) la forme "min/" considere le nombre max non determiné (infini)
<def_val>: Valeur par defaut assignee a <var> * <def_val> : Valeur par défaut assignée à <var>
Fonctionne si <nb_arg> vaut 0/1 1/1 Fonctionne si <nb_arg> vaut 0/1 1/1
<OptE> : Liste des options mutellement exclusives separees par une virgule. * <OptE> : Liste des options mutellement exclusives séparées par une virgule.
<OptI> : Liste des options inclusives separees par une virgule. * <OptI> : Liste des options inclusives séparées par une virgule.
Lors de l initialisation les marqueurs "@OPT" sont lues et analysees. Lors de l'initialisation les marqueurs "@OPT" sont lues et analysées.
Le resultat est compare aux arguments et options sousmis au script Le résultat est comparé aux arguments et options sousmis au script
et les variables suivantes son initialisees ... et les variables suivantes son initialisées ...
- SH_OPTION_<nom> : Initialisee a "1" (Vrai) ou "0" (Faux) selon que l option est respectivement utilise ou non. * SH_OPTION_<nom> : Initialisée à "1" (Vrai) ou "0" (Faux) selon que l'option est respectivement utilisée ou non.
Il existe toujours une variable par option declaree. Ceci concerne aussi les options par defaut Il existe toujours une variable par option déclarée. Ceci concerne aussi les options par défaut géré par la bibliothèque params.lib
gere par la librairie params.lib
- SH_ARG_<nom> : Cette variable existe uniquement si le champ <var> est null et si le type n est pas booleen.
Par defaut elle est initialisee a null ou avec la valeur <def_val>
Si le champ <var> est renseigne, alors SH_ARG_<nom> est remplacee pas <var>.
Si l option associee peut prendre plusieurs arguments, alors les variables
SH_ARG_<nom> ou <var> sont des tableaux dont l index commence a zero.
La taille du tableau peut etre recuperee via ${#SH_ARG_<nom>[*]} ou ${#<var>[*]}.
Les option -h, -s, -log [id], -hist [N] et -dbg N * SH_ARG_<nom> : Cette variable existe uniquement si le champ <var> est null et si le type n'est pas booleen.
sont prises en charge automatiquement. Ces noms sont donc reserves. Par défaut elle est initialisée à null ou avec la valeur <def_val>
Si le champ <var> est renseigné, alors SH_ARG_<nom> est remplacée pas <var>.
Si l'option associée peut prendre plusieurs arguments, alors les variables SH_ARG_<nom> ou <var> sont des tableaux dont l'index commence a zéro.
La taille du tableau peut etre récuperée via ${#SH_ARG_<nom>[*]} ou ${#<var>[*]}.
Les options par defaut realisent les actions suivantes : Les option -h, -s, -log [id], -hist [N] et -dbg N sont prises en charge automatiquement. Ces noms sont donc reservées.
Les options par défaut réalisent les actions suivantes :
-h : Affiche l aide du script (Ligne du cartouche qui commence par "##") -h : Affiche l aide du script (Ligne du cartouche qui commence par "##")
-s : Mode silence. Plus d'affichage sur le terminal. -s : Mode silence. Plus d'affichage sur le terminal.
@ -295,7 +298,7 @@ III - Utilisation du socle bash
-dbg N : Activation du mode debug au niveau "N". Active les messages geres par la librairie fct_message -dbg N : Activation du mode debug au niveau "N". Active les messages geres par la librairie fct_message
dont l'option -debug est utilisee. dont l'option -debug est utilisee.
- Arguments : La declaration des argument du script n est pas obligatoire - Arguments : La declaration des argument du script n est pas obligatoire
Attention : Si aucune option "@OPT:" n est declaree alors il n y auras pas de prise en charge des arguments. Attention : Si aucune option "@OPT:" n est declaree alors il n y auras pas de prise en charge des arguments.
Si votre script ne necessite pas d option, mais qu il presente des arguments, alors il faudras declarer Si votre script ne necessite pas d option, mais qu il presente des arguments, alors il faudras declarer
@ -331,13 +334,13 @@ III - Utilisation du socle bash
<def_val>: Valeur par defaut assignee a <var> <def_val>: Valeur par defaut assignee a <var>
Fonctionne si <nb_arg> vaut 0/1 1/1 Fonctionne si <nb_arg> vaut 0/1 1/1
ATTENTION ATTENTION
Si le caractere "&" est present dans la valeur d un argument, alors cette valeur doit etre encadree Si le caractere "&" est present dans la valeur d un argument, alors cette valeur doit etre encadree
par une simple cote et le caractere "&" doit etre proteger par un anti-slash "\". par une simple cote et le caractere "&" doit etre proteger par un anti-slash "\".
Le cas echeans le shell generera un fils qui tentera l execution d'un script portant le nom de la valeur de l argument. Le cas echeans le shell generera un fils qui tentera l execution d'un script portant le nom de la valeur de l argument.
1.2 Versionnement semantique 1.2 Versionnement semantique
1.2.1 Usage 1.2.1 Usage
L idee de l utilisation du versionnement semantique est de definir clairement les intentions L idee de l utilisation du versionnement semantique est de definir clairement les intentions
d un changement dans un code pour les clients de ce dernier. Ceci permet de fiabiliser la mise en d un changement dans un code pour les clients de ce dernier. Ceci permet de fiabiliser la mise en