# Outil en ligne de commande

Source : https://docs.berkios.online/galerie/outil-en-ligne-de-commande/ · Section : Galerie · Documentation officielle BERKIOS (https://docs.berkios.online)


Trois commandes (`saluer`, `calculer`, `compter`) avec arguments, options, conditions et boucles.

Télécharger l'exemple : https://github.com/berkiosbuinu-server/examples/releases/latest/download/09-outil-en-ligne-de-commande.zip

**Type :** BERKIOS Code · **Niveau :** intermédiaire · **Fichier :** `outils.fr.bk`

## Ce que vous allez apprendre

- Créer un programme qui s'utilise dans un terminal, sans interface graphique.
- Déclarer des arguments, des options et des valeurs par défaut.
- Utiliser `si`, `sinon`, `répéter`, des calculs et des codes de sortie.

## Avant de commencer

L'outil `berkios` doit être installé et réglé sur le français (`berkios --lg --fr`).

## Étape 1 : le code

```text
langue français

application "Outils"
  type commande
  version 1.0
  description "Petits outils en ligne de commande"

commande saluer
  description "Dit bonjour"
  argument nom : texte, obligatoire
  option répétitions : nombre entier, par défaut 1
  option fort : booléen
  action
    répéter répétitions fois
      si fort alors
        afficher "BONJOUR " et nom
      sinon
        afficher "Bonjour " et nom

commande calculer
  description "Applique une opération à deux nombres"
  argument premier : nombre décimal, obligatoire
  argument opération : texte, obligatoire
  argument second : nombre décimal, obligatoire
  action
    si opération est égal à "+" alors
      afficher premier + second
    sinon
      si opération est égal à "*" alors
        afficher premier * second
      sinon
        si opération est égal à "/" alors
          si second est égal à 0 alors
            afficher une erreur "Division par zéro"
            arrêter avec le code 1
          afficher premier / second
        sinon
          afficher une erreur "Opération inconnue : " et opération
          arrêter avec le code 2

commande compter
  description "Compte jusqu'à un nombre"
  argument limite : nombre entier, obligatoire
  action
    définir total comme 0
    répéter limite fois
      définir total comme total + 1
      afficher "Étape " et total et " sur " et limite
    afficher "Terminé : " et (total * 2) et " points"
```

## Étape 2 : vérifier et afficher l'aide

```bash
berkios valider outils.fr.bk
berkios lancer outils.fr.bk --aide
```

```text
Outils 1.0.0
Petits outils en ligne de commande

Utilisation : outils <command> [options]

Commandes :
  saluer    Dit bonjour
  calculer  Applique une opération à deux nombres
  compter   Compte jusqu'à un nombre
```

L'aide est générée automatiquement à partir de vos descriptions.

## Étape 3 : essayer les trois commandes

```bash
berkios lancer outils.fr.bk saluer Amina --répétitions 2 --fort
```

```text
BONJOUR Amina
BONJOUR Amina
```

```bash
berkios lancer outils.fr.bk calculer 6 "*" 7
```

```text
42
```

```bash
berkios lancer outils.fr.bk compter 3
```

```text
Étape 1 sur 3
Étape 2 sur 3
Étape 3 sur 3
Terminé : 6 points
```

Pensez à mettre le `*` entre guillemets : sans eux, le terminal le remplace par la liste des fichiers du dossier.

## Étape 4 : les erreurs

```bash
berkios lancer outils.fr.bk calculer 5 "/" 0
```

Le programme affiche `Division par zéro` et s'arrête avec le **code de sortie 1**. Une opération inconnue (par exemple `"^"`) affiche `Opération inconnue : ^` et s'arrête avec le code 2. Ces codes permettent à d'autres programmes de savoir si l'outil a réussi.

## Étape 5 : en faire un fichier autonome

```bash
berkios exporter outils.fr.bk -o outils.mjs
node outils.mjs compter 2
```

Le fichier `outils.mjs` fonctionne avec Node.js seul, sans installer BERKIOS.

## Le code expliqué

| Instruction | Rôle |
|---|---|
| `type commande` | L'application est un outil de terminal. |
| `commande saluer` | Une commande, avec sa description. |
| `argument nom : texte, obligatoire` | Une valeur que l'utilisateur doit fournir. |
| `option répétitions : nombre entier, par défaut 1` | Un réglage facultatif (`--répétitions 2`), avec sa valeur par défaut. |
| `option fort : booléen` | Un interrupteur : présent ou absent (`--fort`). |
| `répéter répétitions fois` | Une boucle. |
| `si … alors` / `sinon` | Une condition. On peut en imbriquer, comme pour `calculer`. |
| `afficher … et …` | Colle plusieurs morceaux de texte ou de nombres. |
| `définir total comme …` | Crée ou modifie une variable. |
| `arrêter avec le code 1` | Termine le programme avec un code d'erreur. |

## À vous de jouer

Ajoutez une commande `carre` qui affiche le carré d'un nombre :

```text nocheck
commande carre
  description "Affiche le carré d'un nombre"
  argument nombre : nombre décimal, obligatoire
  action
    afficher nombre * nombre
```

Puis : `berkios lancer outils.fr.bk carre 9`.

## Pour aller plus loin

- Exemple suivant : [Échéances et chronomètre](https://docs.berkios.online/galerie/echeances-et-chronometre/)
- Leçon : [Outils en ligne de commande](https://docs.berkios.online/code/ligne-de-commande/)
