Skip to content

[TASK] Improve CLI output formatting for entity commands #96

@fporcari

Description

@fporcari

Summary

Migliorare la formattazione dell'output dei comandi CLI entity per renderli più user-friendly.

Objective

Rendere l'output CLI più leggibile e professionale, distinguendo tra output per uso interattivo (tabelle) e output per scripting (JSON).

Issues Identified

1. tenants delete restituisce True/False

$ mail-proxy tenants delete mytest
True

Output poco elegante. Dovrebbe mostrare un messaggio più descrittivo:

$ mail-proxy tenants delete mytest
✓ Tenant 'mytest' deleted successfully

2. tenants list mostra JSON invece di tabella

Attualmente restituisce JSON grezzo:

$ mail-proxy tenants list
[
  {"id": "bibo", "name": null, "client_auth": {...}, ...},
  ...
]

Dovrebbe mostrare una tabella compatta per default:

$ mail-proxy tenants list
┏━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
│ ID           │ Active │ Client URL                              │
┡━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ bibo         │ ✓      │ http://127.0.0.1:8081/bibo/email/...    │
│ taozen       │ ✓      │ http://127.0.0.1:8081/taozen/email/...  │
│ teamset_apps │ ✓      │ http://127.0.0.1:8081/_main_/email/...  │
└──────────────┴────────┴─────────────────────────────────────────┘

Proposed Solution

Opzione A: Flag --json per output esteso

  • Default: tabella compatta
  • --json: output JSON completo
mail-proxy tenants list          # tabella
mail-proxy tenants list --json   # JSON

Opzione B: Comando separato info

  • list: sempre tabella compatta
  • info <id>: dettagli completi di un singolo record
mail-proxy tenants list          # tabella
mail-proxy tenants info bibo     # JSON o tabella dettagliata

Opzione C: Entrambi

  • list: tabella
  • list --json: JSON lista
  • get <id>: dettagli singolo (già esiste?)

Scope

Comandi da aggiornare:

  • tenants list / tenants delete
  • accounts list / accounts delete
  • messages list / messages delete
  • Altri endpoint con pattern simile

Non incluso:

  • Comandi di gestione istanze (già formattati bene)

Technical Details

Modificare _create_click_command in cli_base.py per:

  1. Riconoscere metodi delete e formattare output con messaggio
  2. Riconoscere metodi list e usare tabella Rich invece di JSON
  3. Aggiungere flag --json per override

Alternativa: creare decoratori o convenzioni negli endpoint per indicare il tipo di output preferito.

Acceptance Criteria

  • delete mostra messaggio di conferma invece di True/False
  • list mostra tabella compatta per default
  • Output JSON disponibile per scripting (flag o pipe detection)
  • Consistenza tra tutti i comandi entity

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions