← Retour

CARNET.md

mon_menu/version/v002/CARNET.md
# Carnet de bord — v002

## Informations

**Projet :** Mon Super Menu
**Version :** v002
**Version du programme :** 1.1
**Langage :** Lua
**Plateforme :** Linux / terminal
**Date :** 2026
**Auteur :** Rafael Luanescu

---

## État de la version

Deuxième version du projet.

Cette version apporte une première séparation du programme en modules Lua.

Le fichier principal commence à déléguer certaines responsabilités à
des modules externes.

---

## Nouveautés

### 1. Création du module `affichage.titre`

Le titre du programme a été séparé du programme principal.

Le module est chargé avec :

```lua
local module_titre = require("affichage.titre")
```

Puis utilisé avec :

```lua
module_titre.afficher()
```

Le fichier principal n'a donc plus besoin de connaître directement
le fonctionnement interne de l'affichage du titre.

---

### 2. Premier test du module

Ajout d'un fichier de test permettant de vérifier le fonctionnement
du module `titre`.

Objectif du test :

* charger le module ;
* vérifier que le module peut être importé ;
* appeler sa fonction `afficher()`.

Cette étape permet de commencer à séparer le **code du programme**
et le **code de test**.

---

### 3. Mise à jour du système

L'option `2` exécute maintenant :

```lua
os.execute("sudo apt update && sudo apt upgrade")
```

Le menu peut donc lancer directement la mise à jour du système Linux.

---

## Organisation actuelle

```text
mon_menu/
├── src/
│   ├── main.lua
│   └── affichage/
│       └── titre.lua
│
├── tests/
│   └── test_titre.lua
│
├── versions/
│   ├── v001/
│   └── v002/
│       ├── src/
│       └── CARNET.md
│
├── README.md
└── LICENSE
```

---

## Ce que j'ai appris

* Utiliser `require()` pour charger un module Lua.
* Séparer une partie du programme dans un fichier différent.
* Retourner une table depuis un module.
* Appeler une fonction appartenant à un module.
* Comprendre l'intérêt de séparer les responsabilités.
* Commencer à créer des tests séparés du programme principal.
* Utiliser `os.execute()` pour lancer une commande Linux depuis Lua.

---

## Évolution du programme

### v001

Le programme était entièrement contenu dans un seul fichier.

```text
main.lua
```

### v002

Le programme commence à être organisé en plusieurs fichiers :

```text
main.lua
    │
    └── require()
            │
            ▼
      affichage/titre.lua
```

Cette séparation prépare le projet à accueillir d'autres modules
dans les prochaines versions.

---

## Décisions techniques

Le projet utilise `local` pour les variables qui n'ont pas besoin
d'être globales.

Le module `titre` est responsable de l'affichage du titre.

Le programme principal reste responsable du déroulement général
du menu.

Principe adopté :

> Une fonction ou un module doit avoir une responsabilité claire.

---

## Prochaines étapes possibles

* Améliorer le module `titre`.
* Ajouter les codes ANSI.
* Effacer l'écran avant l'affichage du menu.
* Ajouter les couleurs.
* Améliorer la gestion des choix.
* Créer d'autres modules.
* Ajouter davantage de tests.
* Commencer les animations du terminal.

---

## Snapshot v002

Cette version est conservée comme **v002**.

Elle représente le premier état du projet dans lequel le code commence
à être séparé en modules et accompagné de tests.

Le développement continue dans `src/`.

Le contenu de `v002` ne doit plus être modifié directement.