"Conversion README en markdown"

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

137
README.md
View File

@ -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.
1 - Cartouche
### 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
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.
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 :
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>
* <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.