Personal tools
Creare scheletri dei progetti in modo facile e automatico con mr.bob

con alcune semplici istruzioni, si assembla di tutto

Jul 29, 2013

Creare scheletri dei progetti in modo facile e automatico con mr.bob

Nel lavoro di tutti i giorni, è utile avere strumenti che semplificano la vita, automatizzando operazioni come la creazione di nuovi prodotti

Durante il recente Europython (di cui ci ha già parlato Alessandro Pisa nel suo post), ho seguito diversi talk dove si parlava di tecniche e strumenti da adottare per migliorare il proprio codice (o la propria vita, a seconda dei punti di vista) e automatizzare alcuni processi ripetitivi.

Alcuni talk erano diretti soprattutto ai dev-ops, e mostravano diversi prodotti per automatizzare il deploy delle applicazioni (come ad esempio Fabric o Batou), mentre altri erano più rivolti agli sviluppatori veri e propri, come il doppio talk del nostro Alessandro Pisa, e quello molto interessante di Domen Kožar.

Quest'ultimo talk, oltre ad elencare una serie di good-practices e prodotti da utilizzare, ha mostrato un tool sviluppato dallo stesso relatore, che permette di creare scheletri di progetti partendo da template di base: mr.bob.

Non ci sono già dei tool che fanno questo lavoro?
Il concetto di base è quello di paster: si lancia un comando, vengono poste delle domande e, in base alla risposta, viene generato uno scheletro del progetto.
La differenza sostanziale, però, è che si tratta di uno strumento molto più leggero (200 righe di codice) e si possono creare progetti di qualunque tipo (da egg python a buildout o semplici cartelle, mentre PasteScript è focalizzato solamente per la creazione di egg python): basta fornire allo script il nome di un template dove andare a leggere le informazioni.

Un template non è altro che un modello di struttura per un progetto, dove devono essere presenti:

  • un file .mrbob.ini dove andranno inserite tutte le domande che verranno poi fatte all'utente
  • la struttura di file e cartelle vera e propria.

All'interno del template possono esserci una serie di file (eventualmente strutturati anche in cartelle), e le risposte date alle varie domande durante il processo servono per popolare le rispettive variabili inserite all'interno di questi file, oppure utilizzate per dare il nome ad alcuni file o cartelle. 
Il motore utilizzato per la composizione ed interpretazione delle variabili all'interno dei file è jinja2, quindi la definizione di queste nei file va fatta come descritto nella documentazione. E' però possibile anche definire un motore di templating diverso, se si vuole.

E' anche possibile eseguire alcune operazioni "manuali" prima o dopo alcuni eventi (per esempio quando si finisce di rispondere alle domande, o prima di iniziare a creare la struttura) con gli hooks: nient'altro che dei metodi python che possono fare qualunque operazione.

Su github sono già presenti diversi template già fatti, anche per Plone o Pyramid per esempio.

bob the builderIn conclusione, mi sembra un buon prodotto e particolarmente flessibile. Da provare sicuramente per i prossimi progetti.
L'unica cosa che manca ancora, secondo me (ma da quel che ho capito è in todo o comunque probabilmente fattibile mediante l'utilizzo degli hook), è la possibilità di aggiungere/omettere pezzi di template in base alla risposta di determinate domande.

Per conoscere tutte le funzionalità aggiuntive, vi rimando alla guida ufficiale, che è un ottimo punto di partenza.

 

L'immagine in testata è di Frédérique Voisin-Demery, mentre quella nel testo è di Nic Dafis

Filed under: , ,
comments powered by Disqus