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
Options globales
-h, --helpAffiche l'aide (globale ou d'une commande) puis quitte. Ex. `bao run --help`.
--versionAffiche la version de Baobab puis quitte.

Commandes

bao run
bao run <file> [--seed N] [--timeout S]

Exé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`.

Options
--seed NFixe la graine du hasard (`aleatoire`) pour des exécutions reproductibles.
--timeout STemps maximum d'exécution en secondes (défaut : 5).
Exemples
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 translate
bao translate <file> [--to python|bao] [-o <file>] [-w]

Convertit 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.

Options
--to python|baoLangue 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.
Exemples
bao translate main.bao --to pythonAffiche la traduction Python.
bao translate app.py -wCrée app.bao à côté de app.py.
bao build
bao build [<path>] [-o <dir>]

Parcourt 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é.

Options
<path>Fichier ou dossier à construire (défaut : dossier courant).
-o, --output <dir>Dossier de sortie (défaut : build).
Exemples
bao build src -o distTranspile src/ vers dist/.
bao test
bao test [<path>]

Dé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.

Options
<path>Dossier à analyser (défaut : dossier courant).
Exemples
bao test testsLance tous les tests sous tests/.
bao format
bao format <path>...

Nettoie 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.

Options
<path>...Un ou plusieurs fichiers ou dossiers à formater.
Exemples
bao format srcFormate tous les .bao de src/.
bao install
Bientôt disponible
bao install <package>

Installera 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.

Exemples
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.

0Succès (ou code de sortie du programme exécuté).
1Erreur de syntaxe, erreur d'exécution, ou tests échoués.
2Mauvaise utilisation : fichier introuvable, argument invalide, commande indisponible.
124Délai d'exécution dépassé (voir --timeout).