feat(cli): aggiunge terminal controller da riga di comando

Nuovo script cli.js che si connette al server via WebSocket come
controller e permette di gestire la partita da terminale con comandi
testuali, colori ANSI, tab-completion e history dei comandi.

Aggiunge script npm "cli" / "cli:dev" e documenta tutti i comandi nel README
This commit is contained in:
2026-04-01 19:12:09 +02:00
parent 27e29a78e7
commit 606b2c1ee6
3 changed files with 366 additions and 0 deletions

View File

@@ -126,6 +126,68 @@ Espone i due server:
---
## Terminal Controller (CLI)
Il CLI è un controller da terminale che si connette al server via WebSocket e permette di gestire la partita senza browser.
### Avvio
```bash
# Modalità produzione (server su porta 3000)
npm run cli
# Modalità sviluppo (server Vite su porta 5173)
npm run cli:dev
# Porta custom
node cli.js <porta>
```
Il CLI richiede che il server sia già in esecuzione in un altro terminale.
### Comandi disponibili
#### Punteggio
| Comando | Alias | Effetto |
|---------|-------|---------|
| `punto casa` | `+`, `pc` | Assegna un punto alla squadra di casa |
| `punto ospite` | `-`, `po` | Assegna un punto alla squadra ospite |
| `undo` | `u` | Annulla l'ultimo punto assegnato |
#### Set
| Comando | Effetto |
|---------|---------|
| `set casa` | Incrementa il contatore set della squadra di casa |
| `set ospite` | Incrementa il contatore set della squadra ospite |
#### Partita
| Comando | Effetto |
|---------|---------|
| `serv` | Cambia il servizio (disponibile solo se il punteggio è 0-0) |
| `reset` | Resetta la partita — chiede conferma prima di procedere |
| `nomi <casa> <ospite>` | Imposta i nomi delle squadre (es. `nomi Antoniana Teate`) |
| `modalita 2/3` | Imposta la modalità best-of-3 |
| `modalita 3/5` | Imposta la modalità best-of-5 |
#### Informazioni
| Comando | Alias | Effetto |
|---------|-------|---------|
| `stato` | — | Mostra il punteggio corrente nel terminale |
| `help` | — | Mostra la lista dei comandi |
| `exit` | `q` | Chiude il CLI |
### Note
- **Tab**: completamento automatico dei comandi
- **Freccia su/giù**: navigazione nella history dei comandi (ultime 100 voci)
- Il Display nel browser si aggiorna in tempo reale ad ogni comando inviato
---
## Test
La suite di test copre tutti i livelli dell'applicazione: