rougail/doc/variable/simple.md
2023-11-02 08:18:34 +01:00

8.6 KiB

Variable

Une variable est un conteneur qui contiendra une ou plusieurs valeurs.

Un variable

Une variable est déjà un nom. C'est à dire qu'on pourra utiliser plus tard la variable via ce nom.

---
version: '1.0'
my_variable:

Il est recommander de n'utiliser que des lettres, chiffres et '_' dans le nom des variables. Le nom ne pas commencé par le caractère "_".

Le type de la variable

Une variable a un type. Ce type permet de définir les valeurs acceptées par cette variable :

  • string : chaine de caractère (type par défaut)
  • number : un nombre
  • float : un chiffre flottant
  • boolean : "True" ou "False", si aucune valeur n'est défini la valeur par défaut de cette variable sera "True", ces variables sont également obligatoire par défaut
  • secret : un secret (comme un mot de passe, une clef privée, ...)
  • mail : une adresse mail
  • filename : nom de fichier au sens Unix (exemple : "/etc/passwd")
  • date : une date au format "%Y-%m-%d" (exemple : "2021-01-30")
  • unix_user : nom d'utilisateur au sens Unix
  • ip : n'importe quelle adresse IPv4
  • cidr : n'importe quelle adresse IPv4 au format CIDR
  • local_ip : adresse IPv4 sur un réseau local, si l'adresse IPv4 n'est pas local, un warning sera afficher mais la valeur sera accepté tout de même
  • netmask : masque d'une adresse IPv4
  • network : adresse réseau
  • network_cidr : adresse réseau au format CIDR
  • broadcast : adresse de diffusion
  • netbios : nom netbios
  • domainname : nom de domaine
  • hostname : nom d'hôte
  • web_address : adresse web (http://www.silique.fr/)
  • port : port
  • mac : adresse MAC
  • unix_permissions : droit d'accès au fichier, répertoire, ...
  • choix

Pour définir le type d'une variable :

---
version: '1.0'
my_variable:
  type: number

Dans certain ce cas, il n'est pas possible de distinger une variable d'une famille. Le type est donc obligatoire. Il faudra dans ce cas mettre le type par défaut :

---
version: '1.0'
my_variable:
  type: string

Description et aide sur la variable

En plus d'un nom et du type, il est possible de mettre une "description" à la variable. C'est une information "utilisateur" qui nous permettra d'avoir des informations complémentaires sur le contenu de cette variable :

---
version: '1.0'
my_variable:
  type: string
  description: This is a good variable

En plus de la description, il est possible de préciser une aide complémentaire :

---
version: '1.0'
my_variable:
  type: string
  help: This is a good variable

Cette aide peut être utilisé à tout moment comme valeur d'un paramètre.

Variable à valeur multiple

Par défaut une variable ne peut acceuillir qu'une seule valeur. Il peut être utile de pouvoir spécifier plusieurs valeurs à une même variable.

Pour définir une variable à valeur multiple :

---
version: '1.0'
my_variable:
  multi: true

Par défaut, les variables multiples ne peuvent pas avoir deux fois la même valeur. Si vous voulez pouvoir mettre plusieurs fois la même valeur, il faut utiliser l'attribut unique :

---
version: '1.0'
my_variable:
  multi: true
  unique: false

Les propriétés

Variable invisible

Il est possible de cacher une variable.

Cacher une variable signifie qu'elle ne sera pas visible lorsqu'on modifie la configuration. Par contre cette variable sera accessibles lorsqu'on va l'utiliser.

Pour cacher une variable :

---
version: '1.0'
my_variable:
  type: string
  hidden: true

Lorsqu'on rend invisible une variable l'utilisateur ne pourra pas modifier sa valeur, il s'il a déjà réussi à la modifier, cette valeur ne sera pas prise en compte.

La valeur de cet attribut peut être fixé par un calcul.

Variable désactive

Il est possible de désactiver une variable.

Désactiver une variable signifie qu'elle ne sera pas visible lorsqu'on modifie la configuration mais également lorsqu'on va l'utiliser.

Pour désactiver une variable :

---
version: '1.0'
my_variable:
  type: string
  disabled: true

La valeur de cet attribut peut être fixé par un calcul.

Variable obligatoire

Variable dont une valeur est requise :

---
version: '1.0'
my_variable:
  type: string
  mandatory: true

Les variables booléans sont par défaut obligatoire. Pour qu'une variable booléan ne soit pas obligatoire il faut le préciser explicitement :

---
version: '1.0'
my_variable:
  type: boolean
  mandatory: false

Les variables avec une valeur par défaut (non calculée) sont également automatiquement obligatoire.

La valeur de cet attribut peut être fixé par un calcul.

Valeur par défaut d'une variable

Il est possible de fixer les valeurs par défaut d'une variable :

---
version: '1.0'
my_variable:
  default: value

Pour une variable multiple, la valeur par défaut doit être une liste et il est possible de préciser plusieurs valeurs :

---
version: '1.0'
my_variable:
  multi: true
  default:
    - value
my_variable:
  multi: true
  default:
    - value1
    - value2

Par défaut, les variables multiples ne peuvent pas avoir deux fois la même valeur. Si vous voulez pouvoir mettre plusieurs fois la même valeur, il faut utiliser l'attribut "unique" :

---
version: '1.0'
my_variable:
  multi: true
  unique: false
  default:
    - value1
    - value2
    - value2

Si la variable n'est pas pas une variable meneuse, la première valeur défini dans cette liste sera également la valeur par défaut proposé si on ajoute une nouvelle valeur à cette variable.

Une valeur par défaut peut également être une valeur calculer.

Redéfinir une variable

Il est possible de définir une variable dans un dictionnaire et de changer son comportement dans une second dictionnaire.

Créons notre variable :

---
version: '1.0'
my_variable:
  type: string

Et redéfinisons là :

---
version: '1.0'
my_variable:
  redefine: true
  description: New description

Créer une variable inexistante

Il est parfois utile de créer une variable si elle n'existe pas dans un autre dictionnaire :

---
version: '1.0'
my_variable:
    exists: false

Si cette variable existe dans un autre dictionnaire, elle ne sera pas modifié ni recréé.

Redéfinir une variable si elle existe

Parfois on veut pouvoir redéfinir une variable mais seulement dans le cas où elle existe déjà :

---
version: '1.0'
my_variable:
  exists: true
  hidden: true

Dans ce cas la variable ne sera pas créé mais uniquement cachée si elle existe déjà.

Variable à valeur automatiquement modifiée

Une variable avec valeur automatiquement modifiée est une variable dont la valeur sera considéré comme modifié par l'utilisateur (ce n'est plus une valeur par défaut).

Voici une variable a valeur automatiquement modifiée :

---
version: '1.0'
my_variable:
  auto_save: true
  default: my_value

Dans ce cas la valeur est fixée à la valeur actuelle. Par exemple, si la valeur de cette variable est issue d'un calcul, la valeur ne sera plus recalculée.

Ces variables sont généralement des variables obligatoires. En effet ces variable ne sont automatiquement modifiées que si elles ont une valeurs.

Une variable meneuse ou suiveuse ne peut pas avoir la propriété auto_save.

Information "test"

L'attribut "test" est un attribut spécial qui permet aux concepteurs d'un dictionnaire d'influancer le robot de test en précisant de valeurs utile à tester.

Concrêtement, le contenu de cet attribut est enregister dans une "information" de l'option Tiramisu correspondante.

Exemple :

---
version: '1.0'
my_variable:
  test: 'yes'

Il est possible de préciser plusieurs valeurs avec le séparateur "|" :

---
version: '1.0'
my_variable:
  test: 'yes|no'

Cette valeur peut être utilisé à tout moment comme valeur d'un paramètre.

Mode de la variable

Le mode par défaut d'une variable correspond au mode de la famille.

Cas particuliers :

  • une variable à valeur automatiquement modifiée ou une variable en lecture seule automatique est par défaut en mode "basic".
  • si la variable n'est pas dans une famille, la variable aura le mode "normal" par défaut.
  • une variable obligatoire sans valeur par défaut (calculer ou non) aura le mode "basic".

Pour définir le mode :

---
version: '1.0'
my_variable:
  type: string
  mode: expert