Fabric: ocultar ('en ejecución') en el nivel de la tarea está roto

Creado en 25 ago. 2011  ·  9Comentarios  ·  Fuente: fabric/fabric

1) no oculta cosas como 'ejecutar tarea ...'
2) elimina las nuevas líneas de la última salida, uniéndose así a la siguiente línea de salida

fabfile es:
@tarea
def show_hostname ():
con la configuración (ocultar ('corriendo')):
ejecutar ('nombre de host')
ejecutar ('fecha')

% /opt/python-2.7/bin/fab -f output.py -H x1, x2 show_hostname
[x1] Ejecutando la tarea 'show_hostname'
[x1] fuera: x1mydomain.de
[x1] Salida: [x1] Salida: Jue. 25 de agosto 10:34:10 CEST 2011
[x1] fuera: [x2] Ejecutando la tarea 'show_hostname'
[x2] fuera: x2.midominio.de
[x2] fuera: [x2] fuera: jue 25 de agosto 10:34:11 CEST 2011
[x2] fuera:
Hecho.

y mientras estamos en eso:

3) ejecutar ('nombre de host'), por ejemplo, siempre genera una línea vacía como esta:

[h1] Ejecutando la tarea 'show_hostname'
[h1] fuera: h1.mydomain.de
[h1] fuera:

es 3) por propósito y ¿vienen 1,2 problemas de esa línea vacía?

Gracias,
Sven

Bug UI

Comentario más útil

  • cómo ocultar también el "Listo". impreso después de la finalización?
  • ¿cómo ocultar también el "Desconexión de my.server.com ... hecho"?

Sería útil si pudiera deshabilitar TODOS (realmente literalmente todos) la salida excepto lo que imprimo explícitamente, excepto cuando hay un problema.

Todos 9 comentarios

si miras la tela. main: main , verá que la 'ejecución' ocurre _fuera_ de la tarea, por lo que no está oculta, por el hide. Como solución alternativa (¡global!), Puede establecer fabric.state.output ['running'] = False, o pasar --hide = running.

Gregg tiene razón con respecto a la ejecución, debe ser una configuración global debido al momento en que se imprimen las líneas de "Ejecución", aunque reconozco que no es terriblemente intuitivo y desearía que hubiera una mejor manera de evitarlo. (Puedo pensar en una forma de hacerlo para tareas de nuevo estilo, pero no estoy seguro de que valga la pena aumentar las diferencias de comportamiento entre los dos tipos, por el momento ...)

Las líneas nuevas al final de los bloques stdout son a propósito, IIRC, aunque no puedo recordar si los estamos insertando explícitamente o si en realidad es desde el extremo remoto (y solo está activando un nuevo prefijo de línea). No creo que sea un error en sí mismo.

Las nuevas líneas "faltantes" pueden estar relacionadas. Tendría que comprobarlo. Puede ser una situación en la que se vería feo de una forma u otra y tuvimos que cambiar la fealdad al caso menos común.

¿Hay alguna actualización sobre este error / inconsistencia de la interfaz de usuario? Estoy tratando de rastrear un archivo a través de fabric, y sería genial enmascarar esa salida "[nombre de host]".

Probé fabric.state.output['running'] = False , nada cambia.

@charlax Puede usar fab --hide=running y eso cambiará ese nivel de salida desde el comienzo de la ejecución, por lo que debería ocultar todas las cosas de la 'tarea x en ejecución' que no se pueden ocultar desde el interior de las tareas. No estoy seguro de por qué no mencioné esto en el comentario anterior.

También debería poder hacer ese cambio fabric.state.output que mencionó, en el nivel del módulo (superior) en su archivo de fábrica, ¿dónde lo puso exactamente cuando lo intentó? Si está dentro de una tarea, todavía no funcionará.

Ah, claro, en realidad lo que estoy tratando de hacer es ocultar la parte [host.com] out: , perdón por el malentendido.

¿Quiere decir sólo esa parte de la línea? Hay una configuración de configuración privada para eso, pero no veo que eso cambie antes de que salga fab 2.0, así que te contaré el secreto: es env.output_prefix , configúralo en False y simplemente imprime literal stdout / stderr sin prefijos de línea.

¡Gracias!

Parece que el decorador @hosts () debería permitir ocultar la parte 'host' de la salida en ejecución sin forzar la desactivación de

fabric.state.output['running']

a nivel mundial. Esto permitiría anular env.hosts para un solo método, que es lo que debe hacer. Parece que debería comportarse como env.hosts en el sentido de que establecerlo en un iterador vacío (o Ninguno) debería activar la ejecución local_only que no imprimiría el host. Actualmente, un iterador vacío en @hosts se ignora y vuelve a usar env.hosts. Si lo quitan, escribiré un parche.

  • cómo ocultar también el "Listo". impreso después de la finalización?
  • ¿cómo ocultar también el "Desconexión de my.server.com ... hecho"?

Sería útil si pudiera deshabilitar TODOS (realmente literalmente todos) la salida excepto lo que imprimo explícitamente, excepto cuando hay un problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones