Accès direct au contenu Accès direct à la navigation

Ce document développe notre façon de construire nos scripts shell. Les scripts relatifs sont proposés dans le répertoire console/ de notre dépôt de référence.

Usage

Tout nos scripts shell portent l’extension sh ; ils doivent être exécutables par le système. Si ce n’est pas le cas, utilisez la commande :

  1. ~$ find path/to/repo/console/ -name "*.sh" -exec chmod +x {} \;

Pour utiliser l’un de nos scripts, jouez :

  1. ~$ sh path/to/repo/console/name-of-script.sh -[options [=argument]]

Vous pouvez utiliser l’option -h dans un premier temps pour lire l’aide du script et son utilisation (les arguments attendus notamment).

Options courantes

Tout nos scripts utilisent des options. Une partie de ces options sont communes à tout les scripts, d’autres sont spécifiques à chacun.

Ces options communes sont :

  • -h : "help" - obtenir une information sur le script, son utilisation et ses options,
  • -v : "verbose" - augementer la verbosité du script (diverses informations non nécessaires seront indiquées à l’écran pour information),
  • -q : "quiet" - diminuer la versbosité du script (seules les informations nécessaires ou les messages d’erreur seront indiquées à l’écran),
  • -i : "interactive" - une confirmation est demandée avant chaque action de création, mise à jour ou suppression,
  • -x : "debug" - certaines commandes sont indiquées à l’écran avant d’être exécutées.

Pour la création d’un nouveau script utilisant ces options, vous pouvez démarrer sur une copie du modèle commons/model.sh.txt.

Utilisation des options

Pour rappel, les scripts shell communs utilisent les options de la façon suivante :

  • les options simples (une lettre unique) peuvent être groupées : -abc au lieu de -a -b -c,
  • les options groupées et non groupées peuvent être cumulées : -ab -c,
  • vous pouvez si nécessaire spécifier un argument : -ab -c argument ou -abc argument
  • le code -- marque la fin des options du script courant : dans la notation -ab -c=argument -- -d l’option d ne sera pas considérée.

Pour nos scripts, vous pouvez également utiliser un signe égal entre les options et leur argument : -ab -c=argument ou -abc=argument

Comportement général

Notre modèle de script embarque une librairie de fonctions shell pour construire un script homogène en exécution ou information utilisateur. Pour plus d’information, jetez un oeil à la partie library de notre modèle.

Information utilisateur

Nos scripts shell utilisent une façon spécifique de formatage des différents messages afin d’identifier l’information en question et de donner une information complète, utile et compréhensible.

Un message basique suivra le modèle :

X  >> info

X peut être un signe de ponctuation pour identifier le type d’information, comme ! pour les erreurs et warnings, ? pour un prompt ...

Messages d’information

Tout script shell DOIT définire différents niveaux de messages afin d’informer l’utilisateur de son utilisation. Aux Ateliers, la bonne pratique en la matière nous semble être de distinguer trois types de messages :

- l’information d’aide (help), très courte, qui doit juste être un rappel rapide du synopsis du script (son utilisation) :

usage : script-name [—option1] [-opt2 =value] [argument1] [argument2] ...

Cette information doit être visibles sur un seul écran (pas ne pager ou de nécessité de scroller l’écran courant) et doit être utilisée en cas d’erreur ou d’option manquante. Son but est de permettre à l’utilisateur de trouver son erreur en un coup d’oeil et de la corriger rapidement.

- l’information d’utilisation (usage), plus longue, qui doit développer le rôle de chaque option, sa valeur par défaut, les alias à disposition et toute information qui peut aider l’utilisateur à comprendre comment construire sa commande pour obtenir le résultat qu’il souhaite. Cette information pouvant être longue, il semble être une bonne id’ée d’utiliser un programme avec pagination comme less ou more.

- le manuel (manual) ; il s’ouvre avec le programme interne man et doit être l’information utilisateur complète finale développant le script, son utilisation, ses options, des exemples, des liens vers les sources originales, une information de contact et un moyen de transmettre des bugs.

Ces trois niveaux d’information doivent être accessibles depuis le script original avec différents arguments comme, respectivement, help, usage et man. Le manuel peut suivre ses propres règles puisqu’il sera le plus souvent ouvert avec le programme man my-manual ; il n’est donc pas nécessaire de le proposer en accès depuis le script. Dans ce cas, les informations d’aide et d’utilisation DOIVENT informer l’utilisateur de la présence du manuel.