Fabric: hide ('running') au niveau de la tâche est cassé

Créé le 25 août 2011  ·  9Commentaires  ·  Source: fabric/fabric

1) il ne cache pas des trucs comme `` exécuter une tâche ... ''
2) il supprime les nouvelles lignes de la dernière sortie, rejoignant ainsi la ligne de sortie suivante

fabfile est:
@tâche
def show_hostname ():
avec les paramètres (masquer ('en cours')):
run ('nom d'hôte')
run ('date')

% /opt/python-2.7/bin/fab -f output.py -H x1, x2 show_hostname
[x1] Exécution de la tâche 'show_hostname'
[x1] sortie: x1mydomain.de
[x1] sortie: [x1] sortie: jeu 25 août 10:34:10 CEST 2011
[x1] out: [x2] Exécution de la tâche 'show_hostname'
[x2] sortie: x2.mydomain.de
[x2] sortie: [x2] sortie: Thu Aug 25 10:34:11 CEST 2011
[x2] sortie:
Fait.

et pendant que nous y sommes:

3) run ('hostname') par exemple renvoie toujours une ligne vide comme ceci:

[h1] Exécution de la tâche 'show_hostname'
[h1] sortie: h1.mydomain.de
[h1] sortie:

est 3) par but et 1,2 problèmes viennent-ils de cette ligne vide?

Merci,
Sven

Bug UI

Commentaire le plus utile

  • comment masquer également le "Terminé". imprimé après l'achèvement?
  • comment masquer également le message "Déconnexion de mon.serveur.com ... terminé."?

Ce serait utile si je pouvais simplement désactiver TOUTES les sorties (littéralement toutes) sauf ce que j'imprime explicitement, sauf en cas de problème.

Tous les 9 commentaires

si vous regardez le tissu. main: main , vous verrez que l '' exécution 'se produit _en dehors_ de la tâche, c'est pourquoi elle n'est pas cachée, par le hide. Pour contourner le problème (global!), Vous pouvez définir fabric.state.output ['running'] = False, ou passer --hide = running.

Gregg a raison à propos de l'exécution - il doit s'agir d'un paramètre global en raison du moment où les lignes "Executing" sont imprimées - bien que je reconnaisse que ce n'est pas terriblement intuitif et souhaite qu'il y ait un meilleur moyen de contourner cela. (Je peux penser à une façon de le faire pour les tâches de nouveau style, mais je ne suis pas sûr qu'il vaut la peine d'augmenter les différences de comportement entre les deux types, pour le moment ...)

Les retours à la ligne à la fin des blocs stdout sont exprès, IIRC, bien que je ne me souvienne pas si nous les insérons explicitement ou si cela provient réellement de l'extrémité distante (et ne fait que déclencher un nouveau préfixe de ligne.) Mais Je ne pense pas que ce soit un bug _per se_.

Les nouvelles lignes «manquantes» peuvent être liées - je devrais vérifier. Peut-être une situation où cela allait paraître moche d'une manière ou d'une autre et nous avons dû déplacer la laideur vers le cas moins courant.

Y a-t-il une mise à jour sur ce bug / incohérence de l'interface utilisateur? J'essaye de suivre un fichier via Fabric, et ce serait génial de masquer ces sorties "[hostname]".

J'ai essayé fabric.state.output['running'] = False , rien ne change.

@charlax Vous pouvez utiliser fab --hide=running et cela renversera ce niveau de sortie dès le début de l'exécution, donc il devrait cacher tous les trucs de 'tâche en cours x' qui ne peuvent pas être cachés à l'intérieur des tâches elles-mêmes. Je ne sais pas pourquoi je n'ai pas mentionné cela dans le commentaire précédent.

Vous devriez également être capable de faire le changement fabric.state.output vous avez mentionné, au niveau du module (supérieur) de votre fabfile - où l'avez-vous mis exactement lorsque vous avez essayé? Si c'est à l'intérieur d'une tâche, cela ne fonctionnera toujours pas.

Oh oui, en fait ce que j'essaie de faire est de cacher la partie [host.com] out: , désolé pour le malentendu.

Signification _juste_ cette partie de la ligne? Il y a un paramètre de configuration privé pour cela, mais je ne vois pas cela changer avant la sortie de fab 2.0, donc je vais vous laisser entrer le secret: c'est env.output_prefix , définissez-le sur False et il sera juste affiche stdout / stderr littéral sans préfixe de ligne.

Merci!

On dirait que le décorateur @hosts () devrait permettre de masquer la partie 'hôte' de la sortie en cours sans forcer la désactivation de

fabric.state.output['running']

globalement. Cela permettrait de surcharger les env.hosts pour une seule méthode, ce qu'elle est censée faire. Il semble qu'il devrait se comporter comme env.hosts dans la mesure où le définir sur un itérateur vide (ou None) devrait déclencher l'exécution local_only qui n'imprimerait pas l'hôte. Actuellement, un itérateur vide dans @hosts est ignoré et revient à utiliser env.hosts. S'il est retiré, j'écrirai un patch.

  • comment masquer également le "Terminé". imprimé après l'achèvement?
  • comment masquer également le message "Déconnexion de mon.serveur.com ... terminé."?

Ce serait utile si je pouvais simplement désactiver TOUTES les sorties (littéralement toutes) sauf ce que j'imprime explicitement, sauf en cas de problème.

Cette page vous a été utile?
0 / 5 - 0 notes