Fabric: hide ('running') no nível da tarefa está quebrado

Criado em 25 ago. 2011  Â·  9Comentários  Â·  Fonte: fabric/fabric

1) não esconde coisas como 'execução de tarefa ...'
2) remove novas linhas da última saída, juntando assim a próxima linha de saída

fabfile é:
@tarefa
def show_hostname ():
com configurações (ocultar ('em execução')):
run ('hostname')
executar ('data')

% /opt/python-2.7/bin/fab -f output.py -H x1, x2 show_hostname
[x1] Executando tarefa 'show_hostname'
[x1] out: x1mydomain.de
[x1] out: [x1] out: Qui, 25 de agosto 10:34:10 CEST 2011
[x1] out: [x2] Executando tarefa 'show_hostname'
[x2] out: x2.mydomain.de
[x2] out: [x2] out: Qui, 25 de agosto 10:34:11 CEST 2011
[x2] out:
Feito.

e enquanto estamos nisso:

3) run ('hostname'), por exemplo, sempre exibe uma linha vazia como:

[h1] Executando tarefa 'show_hostname'
[h1] out: h1.mydomain.de
[h1] out:

é 3) por propósito e 1,2 problemas vêm dessa linha vazia?

Obrigado,
Sven

Bug UI

Comentários muito úteis

  • como também ocultar o "Concluído". impresso após a conclusão?
  • como também ocultar o "Desconectando de my.server.com ... feito."?

Seria útil se eu pudesse simplesmente desabilitar TODAS as saídas (realmente literalmente todas), exceto as que imprimo explicitamente, exceto quando há um problema.

Todos 9 comentários

se você olhar para o tecido. main: main , você verá que a 'execução' acontece _fora_ da tarefa, e é por isso que ela não está oculta pelo hide. Como uma solução alternativa (global!), Você pode definir fabric.state.output ['running'] = False, ou passar --hide = running.

Gregg está certo ao re: executar - precisa ser uma configuração global devido a quando as linhas "Executando" são impressas - embora eu reconheça que não é extremamente intuitivo e gostaria que houvesse uma maneira melhor de contornar isso. (Posso pensar em uma maneira de fazer isso para tarefas de novo estilo, mas não tenho certeza se vale a pena aumentar as diferenças de comportamento entre os dois tipos, no momento ...)

As novas linhas no final dos blocos stdout são propositalmente, IIRC, embora eu não me lembre se os estamos inserindo explicitamente ou se é realmente da extremidade remota (e está apenas disparando um novo prefixo de linha). Não acho que seja um bug _per se_.

As novas linhas "ausentes" podem estar relacionadas - eu teria que verificar novamente. Pode ser uma situação em que ficaria feio de um jeito ou de outro e tivéssemos que mudar a feiura para o caso menos comum.

Existe alguma atualização sobre este bug / inconsistência da IU? Estou tentando seguir um arquivo via malha e seria ótimo mascarar a saída de "[nome do host]".

Tentei fabric.state.output['running'] = False , nada mudou.

@charlax Você pode usar fab --hide=running e isso inverterá o nível de saída desde o início da execução, portanto, deve ocultar todas as coisas de 'execução da tarefa x' que não podem ser ocultadas de dentro das próprias tarefas. Não sei por que não mencionei isso no comentário anterior.

Você também deve ser capaz de fazer aquela fabric.state.output alteração que mencionou, no nível do módulo (topo) em seu fabfile - onde exatamente você colocou quando tentou? Se estiver dentro de uma tarefa, ainda não funcionará.

Certo, na verdade o que estou tentando fazer é esconder a parte [host.com] out: , desculpe pelo mal-entendido.

Significa _apenas_ aquela parte da linha? Há uma definição de configuração privada para isso, mas não vejo mudança antes do lançamento do fab 2.0, então vou lhe contar o segredo: é env.output_prefix , defina-o como False e ele vai apenas imprime stdout / stderr literal sem prefixos de linha.

Obrigado!

Parece que o decorador @hosts () deve tornar possível ocultar a parte 'host' da saída em execução sem forçar a desativação do

fabric.state.output['running']

globalmente. Isso permitiria substituir o env.hosts para um único método que é o que ele deve fazer. Parece que ele deve se comportar como env.hosts, pois defini-lo como um iterador vazio (ou Nenhum) deve acionar a execução local_only que não imprimiria o host. Atualmente, um iterador vazio em @hosts é ignorado e volta a usar env.hosts. Se for puxado, escreverei um patch.

  • como também ocultar o "Concluído". impresso após a conclusão?
  • como também ocultar o "Desconectando de my.server.com ... feito."?

Seria útil se eu pudesse simplesmente desabilitar TODAS as saídas (realmente literalmente todas), exceto as que imprimo explicitamente, exceto quando há um problema.

Esta página foi útil?
0 / 5 - 0 avaliações