|EN?|FR|
Voici les normes à respecter pour contribuer en Shell
Normes de base
On va utiliser des tabulations au lieu d'espaces pour la mise en forme.
{TAB} = Tabulation
= espace
Les fichiers doivent être au format UNIX et non DOS. C'est à dire pour example que les fins de lignes sont des "\n" et non des "\n\r".
L'encodage des fichiers devra être de préférence en UTF-8.
Les entêtes
Voici comment doit être écrit l'entête d'un fichier :
#!/bin/sh ################################################################### #Centreon is developped with GPL Licence 2.0 : #http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt #Developped by : Julien Mathis - Romain Le Merlus # #The Software is provided to you AS IS and WITH ALL FAULTS. #CENTREON makes no representation and gives no warranty whatsoever, #whether express or implied, and without limitation, with regard to the quality, #safety, contents, performance, merchantability, non-infringement or suitability for #any particular or intended purpose of the Software found on the CENTREON web site. #In no event will CENTREON be liable for any direct, indirect, punitive, special, #incidental or consequential damages however they may arise and even if CENTREON has #been previously advised of the possibility of such damages. # #For information : contact@centreon.com ################################################################### #---- ## @Synopsis {DESCRIPTION} ## @Copyright Copyright 2008, AUTEUR ## @License GPL v2 ## {DESCRIPTION LONGUE} ## ... ## Possibilité d'utilisé les balises ## <p> : retour à la ligne ## <pre> </pre> : pour mettre du texte sous forme de code ## <@function NOM_FONCTION> #----
Les variables
Pour le nomage des variables, la norme est que les variables dites globales (utilisée dans tout le script) sont en majuscule.
- Bon
#!/bin/sh MAVARIABLE="" ma_variable="" mavariable=""
On peut aussi les minuscules, mais on va essayer de les employer pour les flags.
- Mauvais
#!/bin/sh MaVariable=""
Les structures de contôles
Les structures de contrôles sont toujours écrites comme suit:
Examples de structues :
#!/bin/sh # Pour les chaines de caractères if [ "$TOTO" = "titi" ] ; then {TAB}mon_action elif [ "$TUTU" = "tutu" -a "$TITI" = "titi" ] ; then {TAB}mon_action2 else {TAB}mon_action3 fi # Pour les int if [ $RC -eq 0 ] ; then {TAB}mon_action4 elif [ $RC -gt 1 ] ; then {TAB}mon_action5 else {TAB}mon_action6 fi while [ $TITI = "toto" ] ; do {TAB}mon_action7 done case $choise in {TAB}tutu){TAB}mon_action8 {TAB}{TAB}mon_action9 ;; {TAB}*){TAB}mon_action9 ;; esac
Les fonctions
Pour le nomage des fonctions, la norme est que l'on sépare chaque terme de la fonction par un souligné "_", le tout attaché.
- Bon
#!/bin/sh function ma_fonction() { {TAB}definition }
- Mauvais
#!/bin/sh function maFonction() { {TAB}definition } function MaFonction() { {TAB}definition }
La documentation comme si dessous :
#!/bin/sh #--- ## {DESCRIPTION_COURTE} ## {DESCRIPTION_LONGUE} (s'il y en a besoin) ## ... on peut utiliser un lien vers une autre fonction avec <@function NOM_FONCTION> ## ## @param Mon premier argument ## @param Second argument ... ## @return Ce qui est retourné (ex: @return 0 retourne 0 quand la fonction est OK) ## @Globals Les variables globales utilisés ## @Stdout Ce qui est affiché sur la sortie standard ## @Stderr Ce qui est affiché sur la sortie d'erreur ## @Stdin Ce qui est saisie sur l'entrée standard #---- function ma_function() { {TAB}local arg1=$1 {TAB}local arg2=$2 {TAB}local args=$@ {TAB}local ret=0 {TAB}actions {TAB}return $ret }
/!\ L'ensemble des ces normes reste encore a valider /!\
