CLI
La CLI `bao` est l'outil en ligne de commande de Baobab. Elle utilise exactement le même moteur que l'IDE en ligne : vos programmes s'exécutent de façon identique en local et dans le navigateur. `baobab` est un alias officiel de `bao`, et `bao programme.bao` équivaut à `bao run programme.bao` - comme `py` et `python` sous Windows. Cette page décrit chaque commande, ses options et ce qu'elle affiche - aucune connaissance préalable n'est requise.
Installation & vérification
L'IDE en ligne ne nécessite aucune installation. La CLI `bao` s'installe en une seule commande sur macOS et Linux (Python 3.13+).
# Installer la CLI Baobab (macOS / Linux) :
curl -fsSL get.baobablang.dev | sh
# Ou avec pipx :
pipx install baobab-lang
bao --version # → bao 0.1.0
bao --help # liste toutes les commandes| -h, --help | Affiche l'aide (globale ou d'une commande) puis quitte. Ex. `bao run --help`. |
| --version | Affiche la version de Baobab puis quitte. |
Commandes
bao runExécute un fichier `.bao` (ou `.py`). La commande suit automatiquement les imports locaux (`importer … depuis "./x.bao"`), vérifie la syntaxe avant de lancer, affiche la sortie du programme, et renvoie le code de sortie du programme. En cas d'erreur, la trace est affichée avec des noms français (`ErreurValeur`, `ErreurCle`…) et pointe vers votre fichier `.bao`.
| --seed N | Fixe la graine du hasard (`aleatoire`) pour des exécutions reproductibles. |
| --timeout S | Temps maximum d'exécution en secondes (défaut : 5). |
bao run main.baoLance le programme.bao run jeu.bao --seed 42Exécution déterministe du hasard.baobab jeu.baoAlias interpréteur : identique à `bao run jeu.bao`.bao translateConvertit du code dans les deux sens en préservant l'indentation, les commentaires et les lignes vides. Le sens est déduit de l'extension (`.bao` → Python, `.py` → Baobab) ou forcé avec `--to`. Sans option de sortie, le résultat est écrit sur la sortie standard ; avec `-o` il va dans le fichier indiqué, avec `-w` à côté de la source.
| --to python|bao | Langue cible (défaut : déduite de l'extension). |
| -o, --output <file> | Écrit le résultat dans ce fichier. |
| -w, --write | Écrit à côté de la source en changeant l'extension. |
bao translate main.bao --to pythonAffiche la traduction Python.bao translate app.py -wCrée app.bao à côté de app.py.bao buildParcourt un dossier (ou un fichier) et transpile chaque `.bao` en `.py` dans un dossier de sortie (défaut : `build/`), en conservant la structure des sous-dossiers. La syntaxe de chaque fichier est vérifiée ; s'il y a une erreur, elle est signalée et le fichier est ignoré.
| <path> | Fichier ou dossier à construire (défaut : dossier courant). |
| -o, --output <dir> | Dossier de sortie (défaut : build). |
bao build src -o distTranspile src/ vers dist/.bao testDécouvre et exécute tous les fichiers nommés `test_*.bao` ou `*_test.bao` sous le dossier indiqué. Un test réussit si son programme se termine avec le code 0 (utilisez `affirmer` pour vérifier vos hypothèses). Un récapitulatif `N réussis, M échoués` est affiché ; la commande renvoie un code non nul si au moins un test échoue.
| <path> | Dossier à analyser (défaut : dossier courant). |
bao test testsLance tous les tests sous tests/.bao formatNettoie la mise en forme : convertit les tabulations en 4 espaces, supprime les espaces en fin de ligne et garantit une seule ligne vide finale. Accepte des fichiers et des dossiers (récursif sur les `.bao`). Les fichiers modifiés sont listés.
| <path>... | Un ou plusieurs fichiers ou dossiers à formater. |
bao format srcFormate tous les .bao de src/.bao installInstallera des paquets depuis le futur registre communautaire Baobab. Cette commande n'est pas encore disponible : le gestionnaire de paquets et le registre sont prévus pour une phase ultérieure. Pour l'instant, elle affiche un message et se termine sans rien installer.
bao install math-frBientôt : installe le paquet math-fr.Codes de sortie
Chaque commande renvoie un code de sortie exploitable dans vos scripts et en CI.
| 0 | Succès (ou code de sortie du programme exécuté). |
| 1 | Erreur de syntaxe, erreur d'exécution, ou tests échoués. |
| 2 | Mauvaise utilisation : fichier introuvable, argument invalide, commande indisponible. |
| 124 | Délai d'exécution dépassé (voir --timeout). |