README.md
mon_menu/README.md
# Mon Super Menu
Un petit menu interactif écrit en **Lua** pour le terminal Linux.
Le projet est développé progressivement dans le but d'apprendre Lua,
la programmation modulaire, les interactions avec le terminal et
l'organisation d'un projet logiciel.
---
## Auteur
**Rafael**
---
## Langage
* Lua
## Plateforme
* Linux
* Terminal
---
## Objectif du projet
L'objectif initial est de créer un menu simple permettant de lancer
différentes actions depuis le terminal.
Le projet évoluera progressivement vers un petit environnement personnel
dédié à Lua.
Fonctionnalités envisagées :
* menu interactif ;
* couleurs ANSI ;
* navigation au clavier ;
* animations du terminal ;
* sous-menus ;
* gestionnaire de projets ;
* système de snapshots ;
* petit éditeur de code spécialisé Lua.
---
## Fonctionnement actuel
Le programme propose actuellement plusieurs choix :
```text
1. Lancer le serveur graphique
2. Mettre à jour le système
3. Quitter
```
Le programme fonctionne en boucle jusqu'à ce que l'utilisateur choisisse
de quitter.
---
## Organisation du projet
```text
mon_menu/
│
├── src/
│ ├── main.lua
│ └── affichage/
│ └── titre.lua
│
├── tests/
│ ├── lancer_tests.lua
│ └── test_titre.lua
│
├── versions/
│ ├── v001/
│ └── v002/
│
├── README.md
└── LICENSE
```
### `src/`
Contient le code source actuellement en développement.
### `tests/`
Contient les programmes utilisés pour tester les modules.
Chaque module peut avoir son propre fichier de test.
Exemple :
```text
tests/
├── lancer_tests.lua
├── test_titre.lua
├── test_menu.lua
└── test_utilisateur.lua
```
### `versions/`
Contient les snapshots du projet.
Chaque version représente un état conservé du programme.
Exemple :
```text
v001
v002
v003
```
Les anciennes versions ne sont pas modifiées.
---
## Modules
Le projet utilise des modules Lua afin de séparer progressivement
les différentes responsabilités du programme.
Exemple :
```lua
local titre = require("affichage.titre")
```
Le module `affichage.titre` est responsable de l'affichage du titre
du programme.
Les modules sont placés dans `src/`.
---
## Tests
Les tests sont séparés du programme principal.
Chaque module peut posséder son propre fichier de test.
Exemple :
```text
tests/
├── lancer_tests.lua
└── test_titre.lua
```
Le fichier `test_titre.lua` teste le module :
```text
src/affichage/titre.lua
```
### Lanceur de tests
Le fichier `lancer_tests.lua` permet de choisir quel test exécuter.
Depuis le dossier `tests/` :
```bash
lua lancer_tests.lua test_titre.lua
```
Pour tester un autre module :
```bash
lua lancer_tests.lua test_menu.lua
```
Le lanceur utilise l'argument passé au programme Lua pour déterminer
quel fichier de test doit être exécuté.
Cela permet de garder un seul lanceur pour plusieurs tests.
---
## Versions
Le projet utilise un système simple de snapshots locaux :
```text
v001
v002
v003
...
```
Chaque snapshot contient une copie de l'état du projet à un moment donné.
Un `CARNET.md` accompagne chaque version afin de conserver les notes
et les informations concernant son développement.
Exemple :
```text
versions/
├── v001/
│ ├── src/
│ └── CARNET.md
│
├── v002/
│ ├── src/
│ └── CARNET.md
│
└── v003/
├── src/
└── CARNET.md
```
Les snapshots sont conservés comme des archives et ne sont pas
modifiés après leur création.
---
## Philosophie du projet
Le projet est volontairement développé progressivement.
Principe :
```text
Comprendre
↓
Construire
↓
Tester
↓
Améliorer
↓
Créer un snapshot
↓
Continuer
```
L'objectif est de comprendre les mécanismes avant de chercher
à les automatiser.
Le projet privilégie dans un premier temps les outils simples,
les mécanismes Lua de base et les solutions faciles à comprendre.
---
## État du projet
**Version actuelle : v002**
Projet en développement.
Les fonctionnalités et l'organisation peuvent évoluer au fur et à
mesure de l'apprentissage de Lua.
---
## Licence
Voir le fichier `LICENSE`.