Aujourd’hui je vous propose de découvrir comment créer une interface en ligne de commande (TUI) avec le framework go Bubble Tea. L’architecture n’est pas forcément évidente à appréhender au premier abord, donc on va prendre un exemple simple pour bien comprendre son fonctionnement : une todo-list dans le terminal.
Fonctionnement de base
Pour découvrir le framework commençons par créer un petit compteur
Bubble Tea fonctionne autour d’un modèle qui représente l’état de notre application. Ce modèle doit implémenter trois méthodes :
Init, qui sera appelé à l'initialisation du programme.Update, qui recevra un message et devra modifier le modèle en fonction.
View., qui permet de générer le rendu final
Comprendre les commandes et messages
Lorsque l'on souhaite effectuer une action il faudra utiliser une commande, qui est une fonction qui doit renvoyer un message.
Par exemple, si on souhaite incrémenter le compteur toutes les secondes, on peut créer un message et utiliser la commande Init pour lancer ce message. Dans la méthode Update on pourra détecter cet évènement et le relancer.
Dans bubbletea les commandes sont exécuté au sein d'une goroutine et ne bloque pas l'interface pendant leur traitement.
Les "bubbles"
Maintenant qu’on a vu le principe de base, on peut mettre en place notre todo-list mais on a besoin d'un champs pour pouvoir entrer une tâche. Pour cela, bubbletea offre une bibliothèques de composant, nommée bubbles.
Dans la méthode Update il faudra transférer les message vers le champs afin qu'il réagisse à ce que fait l'utilisateur.
Les "bubbles" fonctionnent comme notre modèle principal avec les 3 méthodes Init, Update et View. Il est aussi possible de créer nos propres composants en créant des sous-modèles.
Il est aussi possible de personnaliser l'apparence de notre champs avec la librairie lipgloss.