"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 :
+-----------------+-----------------------------------------------------------------------------------------------+
| Dossier | Description |
+-----------------+-----------------------------------------------------------------------------------------------+
| {Racine}/bin | Contient les binaires (scripts Bash) |
| {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}/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}/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}/man | Contient les fichiers d'aide des scripts pour l'utilitaire "man" |
| {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}/tmp | Contient les fichiers temporaires des scripts |
+-----------------+-----------------------------------------------------------------------------------------------+
+-----------------+-----------------------------------------------------------------------------------------------+
| Dossier | Description |
+-----------------+-----------------------------------------------------------------------------------------------+
| {Racine}/bin | Contient les binaires (scripts Bash) |
| {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}/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}/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}/man | Contient les fichiers d'aide des scripts pour l'utilitaire "man" |
| {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}/tmp | Contient les fichiers temporaires des scripts |
+-----------------+-----------------------------------------------------------------------------------------------+
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.
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
Ceci ne concerne pas les script Ruby qui ne sont pas pris en charge par le socle decrit ici.
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.
### 1 - Cartouche
Les scripts doivent commencer par le cartouche ci-dessous :
1 - Cartouche
Les scripts doivent commencer par le cartouche ci-dessous :
+----------------------------------------------------------------------------------------------------+
| |
| #!/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
pour garantir la fiabilite de l information. Ce sont ces lignes, qui sont lues lors de l utilisation de
l'option par defaut "-h".
Note : Les lignes commençant par 2 "#" sont utilisees pour generer l'aide, leur maintient est donc nécéssaire
pour garantir la fiabilité de l'information. Ce sont ces lignes, qui sont lues lors de l'utilisation de
l'option par defaut "-h".
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.
### 1.1 Elements du cartouche
- <Auteur> : <Prenom> <Nom>
#### 1.1.1 Meta-données
- <Version> : Format x.y.z
Pour le suivie des versions on utilisera le versionnement semantique (voir paragraphe III-1.2).
<Action> : peut prendre les valeurs suivantes -> cre, ano, evo, typo
* 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
- 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.
<Auteur> : <Prenom> <Nom>
- Dependance : Permet de definir la liste ainsi que la version des scripts qui sont appeles.
Dans le cas d un changement cela permet de connaitre les scripts qui sont impactes.
Pour le moment aucun script n exploite cette meta-donnee.
Present pour un future usage.
<Version> : Format x.y.z
Pour le suivi des versions on utilisera le versionnement sémantique (voir paragraphe III-1.2).
- 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.
Dans ce cas les options par defaut -h, -log, -hist, -cpt, -s et -dbg ne seront pas disponible.
* Mise a jour : Ce paragraphe est utilisé pour suivre l'evolution des versions. La dernière version en
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
faudras declarer une option bidon. ex: "# @OPT: f:bidon::::::"
* Dependance : Permêt de définir la liste ainsi que la version des scripts qui sont appelés.
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
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.
* Liste des options : La déclaration des options n'est pas obligatoire.
La declaration est realise dans le paragraphe "Liste des options et arguments". Chaque
option est identifiee par l entete de ligne "# @OPT:" suivi de la description.
La description consiste en une liste de parametres separes par ":"
Si aucune déclaration n'est présente alors la bibliothèque params.lib ne fait aucune action.
Dans ce cas les options par défaut -h, -log, -hist, -cpt, -s et -dbg ne seront pas disponible.
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>
L ordre des parametre est fige et tous doivent etre presents.
8 champs sont obligatoires, soit 7 caracteres ":" (on ne compte pas le caracatere ":" suivant @OPT).
Exemple de declaration valide :
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 déclaration valide :
# @OPT: fb:h::0:::
# @OPT: fb:s::0:::
# @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:pr:G_PR_NOM:1/1:sq,t,l:
<type> : Propriete de l attribu defini par l agregation des lettres suivantes
f -> Option falcultative
b -> Booleen
o -> Option obligatoire
M -> Argument transforme en majuscule
* <type> : Propriété de l'attribu défini par l'aggrégation des lettres suivantes:
* f -> Option falcultative
* b -> Booléen
* o -> Option obligatoire
* 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)
si plusieurs arguments alors un tableau sera initialise <var[n]>
L index [n] commence a zero.
Le nombre d arguments effectivement passes a la commande est "${#<var>[*]}".
L valeur max de l index [n] est "${#<var>[*]} - 1".
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
si plusieurs arguments alors un tableau sera initialisé <var[n]>
L'index [n] commence à zero.
Le nombre d'arguments éffectivement passés a la commande est "${#<var>[*]}".
La valeur max de l'index [n] est "${#<var>[*]} - 1".
<nb_arg> : nombre d arguments attendus de la forme "min/max", "min/", "max" ou ""
si vide ou "0" alors l option est booleene.
la forme "min/" considere le nombre max non determine (infini)
* <nb_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou ""
si vide ou "0" alors l'option est booléene.
la forme "min/" considere le nombre max non determiné (infini)
<def_val>: Valeur par defaut assignee a <var>
Fonctionne si <nb_arg> vaut 0/1 1/1
* <def_val> : Valeur par défaut assignée à <var>
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.
Le resultat est compare aux arguments et options sousmis au script
et les variables suivantes son initialisees ...
Lors de l'initialisation les marqueurs "@OPT" sont lues et analysées.
Le résultat est comparé aux arguments et options sousmis au script
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.
Il existe toujours une variable par option declaree. Ceci concerne aussi les options par defaut
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>[*]}.
* 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 déclarée. Ceci concerne aussi les options par défaut géré par la bibliothèque params.lib
Les option -h, -s, -log [id], -hist [N] et -dbg N
sont prises en charge automatiquement. Ces noms sont donc reserves.
* SH_ARG_<nom> : Cette variable existe uniquement si le champ <var> est null et si le type n'est pas booleen.
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 "##")
-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
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.
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>
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
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.
1.2 Versionnement semantique
1.2 Versionnement semantique
1.2.1 Usage
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