← Retour

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