svdev — Gestore di Ambienti di Sviluppo

CLI Python per ambienti di sviluppo multi-tenant isolati · FAS @ UniTN

Cos'è svdev?

svdev è un package Python (installabile tramite pip install -e .) che espone un unico comando svdev per gestire ambienti di sviluppo isolati sulla stessa macchina. Ogni tenant è uno stack Docker Compose costruito su un'immagine FastAPI core condivisa, con le rotte per-tenant caricate a runtime importando un router.py tramite importlib — nessuna duplicazione del codice del framework tra i tenant.

Punto Architetturale Chiave

I file Docker Compose non vengono committati — vengono generati a runtime da un Python string.Template e salvati in ~/.svdev/<tenant>/. Questo tiene gli artefatti di runtime separati dal codice sorgente e rende banale rigenerare o aggiornare la configurazione dello stack senza modificare file manualmente. Il Docker SDK gestisce l'ispezione (stato, health, uptime); subprocess guida docker compose per le operazioni sul ciclo di vita.

Comandi CLI

  • svdev new — scaffolda un nuovo tenant con una porta assegnata automaticamente
  • svdev list / status — mostra stato, porta, uptime, health e immagine tramite Docker SDK
  • svdev start / stop / restart / logs — gestione completa del ciclo di vita di qualsiasi tenant
  • svdev bash / edit — apri una shell o modifica la configurazione del tenant in-place
  • svdev remove — abbatte lo stack ed elimina i suoi volumi (operazione distruttiva)

Tenant Docs Integrato

svdev include un tenant docs built-in che serve la documentazione del progetto come web app FastAPI + Jinja2, renderizzando Markdown in HTML a ogni richiesta. Lo stesso sorgente Markdown viene anche compilato in PDF tramite Docker — documentazione trattata come codice, servita e compilata da un'unica sorgente di verità.

Stack Tecnologico

Python Click Rich Docker SDK FastAPI Jinja2 Docker Compose Bash