2012-01-22 12 views
98

¿Cómo puedo pasar un parámetro a una tarea de estructura al llamar a "fab" desde la línea de comando? Por ejemplo:Pase el parámetro a la tarea de estructura

def task(something=''): 
    print "You said %s" % something 
$ fab task "hello" 
You said hello 

Done. 

¿Es posible hacer esto sin preguntar con fabric.operations.prompt?

Respuesta

174

tela utiliza la siguiente sintaxis para pasar argumentos a tareas:

fab task:'hello world' 
fab task:something='hello' 
fab task:foo=99,bar=True 
fab task:foo,bar 

Usted puede leer más sobre esto en Fabric docs.

+7

Las comillas no son necesarias; todos los argumentos son cadenas: "dado que este proceso involucra el análisis de cadenas, todos los valores terminarán como cadenas de Python, así que planee en consecuencia. (Esperamos mejorar esto en futuras versiones de Fabric, siempre que se pueda encontrar una sintaxis intuitiva)." –

+2

Sin embargo, las citas en torno a 'hello world' parecen necesarias. – PEZ

+1

@PEZ Si eso es cierto, las comillas probablemente sean necesarias en ese ejemplo porque el analizador de línea de comandos de la terminal o del fabric vería el espacio y pensaría que ese era el final de todo para esa tarea y ese 'mundo' era una tarea nueva. –

0

Debe pasar todas las variables de Python como cadenas, especialmente si está utilizando un subproceso para ejecutar las secuencias de comandos, o obtendrá un error. Tendrá que convertir las variables de nuevo a tipos int/boolean por separado.

def print_this(var): 
    print str(var) 

fab print_this:'hello world' 
fab print_this='hello' 
fab print_this:'99' 
fab print_this='True' 
Cuestiones relacionadas