2016-05-02 11 views
6

C'è un modo per generare automaticamente alcuni valori, dopo che l'utente ha fornito alcuni valori per le variabili in cookiecutter.json?Come utilizzare le variabili generate dalla macchina in cookiecutter

Il motivo che mi chiedo è che:

  • uno dei valori di cui ho bisogno per richiedere è piuttosto difficile per gli utenti di lavorare fuori
  • ma è davvero facile per me scrivere del codice Python per generare il valore corretto

Quindi mi piacerebbe davvero essere in grado di rimuovere il prompt utente e calcolare invece il valore.

Le cose che ho provato:

  • cercato online per un esempio pre_gen_project.py file per mostrare come si fa
  • Leggi l'cookiecutter Advanced Usage pagina

sto usando cookiecutter sulla riga di comando:

cookiecutter path_to_template 

Mi manca un y trucchi?

risposta

3

Avevo bisogno di questa esatta capacità solo pochi giorni fa. La soluzione mi è venuta è stato quello di scrivere uno script wrapper per cookiecutter, simile a quello che è menzionato in:

http://cookiecutter.readthedocs.io/en/latest/advanced_usage.html#calling-cookiecutter-functions-from-python

mio script genera una stringa casuale per l'utilizzo in un progetto Django. Ho chiamato il mio script cut-cut:

#! /usr/bin/env python 

from cookiecutter.main import cookiecutter 

import os 

rstring = ''.join([c for c in os.urandom(1024) 
        if c.isalnum()])[:64] 

cookiecutter(
    'django-template',  # path/url to cookiecutter template 
    extra_context={'secret': rstring}, 
) 

Così ora mi basta eseguire cut-cut e passo attraverso il processo come di consueto. L'unica differenza è che la voce denominata segreto nel mio file cookiecutter.json è precompilato con il valore generato in rString dallo script, fornito tramite il extra_context passato.

È possibile modificare lo script per accettare il modello tramite la riga di comando, ma nel mio utilizzo utilizzo sempre lo stesso modello, quindi è sufficiente passare un valore codificato "django-template" come indicato nel codice sopra.

+0

Grazie mille. Potresti chiarire una cosa per favore: gli utenti vedono un prompt per il tuo valore 'segreto' - con valore di rstring in, che devono accettare - o hai trovato un modo per mettere un valore in cookiecutter.json in silenzio, senza prompt dell'utente ? –

+0

Sì, visualizzano ancora il prompt WITH il valore di rstring come predefinito in modo che possano accettarlo premendo semplicemente enter o possono invece digitare qualunque valore scelgano. Funziona esattamente come il resto dei campi in cookiecutter. Inoltre, ciò che si passa nello script è un dizionario che può effettivamente fornire valori predefiniti per più elementi come si sceglie. – zzzirk

+0

Grazie. Questo è utile per aggiungere valori extra prima che l'utente abbia fornito il loro input. Questa è davvero una bella idea ... Comunque, in realtà sto cercando un modo per fornire valori ** dopo ** che l'utente abbia fornito input, in base alle loro risposte. –

Problemi correlati