Fabric: Das Verstecken ('Laufen') auf Aufgabenebene ist unterbrochen

Erstellt am 25. Aug. 2011  ·  9Kommentare  ·  Quelle: fabric/fabric

1) Es verbirgt keine Dinge wie 'Aufgabe ausführen ...'
2) Es entfernt Zeilenumbrüche aus der letzten Ausgabe und verbindet sich so mit der nächsten Ausgabezeile

Fabfile ist:
@Aufgabe
def show_hostname ():
mit Einstellungen (verstecken ('läuft')):
run ('Hostname')
run ('date')

% /opt/python-2.7/bin/fab -f output.py -H x1, x2 show_hostname
[x1] Task 'show_hostname' ausführen
[x1] out: x1mydomain.de
[x1] raus: [x1] raus: Do 25. August 10:34:10 MESZ 2011
[x1] out: [x2] Ausführen der Aufgabe 'show_hostname'
[x2] out: x2.mydomain.de
[x2] raus: [x2] raus: Do 25. August 10:34:11 MESZ 2011
[x2] raus:
Getan.

und während wir dabei sind:

3) run ('hostname') gibt zum Beispiel immer eine leere Zeile wie folgt aus:

[h1] Ausführen der Aufgabe 'show_hostname'
[h1] out: h1.mydomain.de
[h1] raus:

ist 3) absichtlich und kommen 1,2 Probleme von dieser leeren Zeile?

Vielen Dank,
Sven

Bug UI

Hilfreichster Kommentar

  • wie man auch das "Fertig" versteckt. nach Fertigstellung gedruckt?
  • Wie verstecke ich auch das "Trennen von my.server.com ... erledigt"?

Es wäre nützlich, wenn ich nur ALLE (wirklich buchstäblich alle) Ausgaben deaktivieren könnte, außer was ich explizit ausdrucke, außer wenn es ein Problem gibt.

Alle 9 Kommentare

wenn Sie Stoff betrachten. main: main , Sie werden sehen, dass das 'Ausführen' außerhalb der Aufgabe stattfindet, weshalb es nicht durch das Verstecken ausgeblendet wird. Als Workaround (global!) Können Sie Fabric.state.output ['running'] = False festlegen oder --hide = running übergeben.

Gregg hat Recht mit: Ausführen - es muss eine globale Einstellung sein, da die Zeilen "Ausführen" gedruckt werden - obwohl ich anerkenne, dass es nicht besonders intuitiv ist und wünschte, es gäbe einen besseren Weg, dies zu umgehen. (Ich kann mir eine Möglichkeit vorstellen, dies für Aufgaben im neuen Stil zu tun, bin mir aber nicht sicher, ob es sich im Moment lohnt, die Verhaltensunterschiede zwischen den beiden Typen zu erhöhen ...)

Zeilenumbrüche am Ende von stdout -Blöcken sind absichtlich, IIRC, obwohl ich mich nicht erinnern kann, ob wir sie explizit einfügen oder ob sie tatsächlich vom entfernten Ende stammen (und nur ein neues Zeilenpräfix auslösen) Ich denke nicht, dass es ein Fehler ist.

Die "fehlenden" Zeilenumbrüche könnten verwandt sein - ich müsste das noch einmal überprüfen. Vielleicht war es eine Situation, in der es auf die eine oder andere Weise hässlich aussehen würde und wir die Hässlichkeit auf den weniger verbreiteten Fall verlagern mussten.

Gibt es ein Update zu dieser Fehler- / UI-Inkonsistenz? Ich versuche, eine Datei über Fabric zu verfolgen, und es wäre großartig, diese "[Hostname]" - Ausgabe zu maskieren.

Ich habe fabric.state.output['running'] = False ausprobiert, nichts hat sich geändert.

@charlax Sie können fab --hide=running , wodurch der Ausgangspegel vom Beginn des Laufs an umgedreht wird. Daher sollten alle Inhalte der 'laufenden Aufgabe x' ausgeblendet werden, die nicht vor den Aufgaben selbst verborgen sind. Ich bin mir nicht sicher, warum ich das im vorherigen Kommentar nicht erwähnt habe.

Sie sollten auch in der Lage sein, die fabric.state.output Ihnen erwähnte Änderung von

Oh, richtig, eigentlich versuche ich, den Teil [host.com] out: verstecken, entschuldige das Missverständnis.

Bedeutet das nur diesen Teil der Linie? Es gibt eine private Konfigurationseinstellung dafür, aber ich sehe keine Änderung, bevor Fab 2.0 herauskommt, also werde ich Sie in das Geheimnis einweihen: Es ist env.output_prefix , setzen Sie es auf False und es wird einfach Drucken Sie das Literal stdout / stderr ohne Zeilenpräfixe.

Vielen Dank!

Scheint, als ob der @hosts () -Dekorator es ermöglichen sollte, den 'Host'-Teil der laufenden Ausgabe auszublenden, ohne das Deaktivieren zu erzwingen

fabric.state.output['running']

global. Dies würde es ermöglichen, die env.hosts für eine einzelne Methode zu überschreiben, was genau das ist, was sie tun soll. Es scheint, dass es sich so verhalten sollte, wie die env.hosts, wenn es auf einen leeren Iterator (oder None) gesetzt wird, die local_only-Ausführung auslösen sollte, die den Host nicht drucken würde. Derzeit wird ein leerer Iterator in @hosts ignoriert und es wird auf die Verwendung von env.hosts zurückgegriffen. Wenn es gezogen wird, schreibe ich einen Patch.

  • wie man auch das "Fertig" versteckt. nach Fertigstellung gedruckt?
  • Wie verstecke ich auch das "Trennen von my.server.com ... erledigt"?

Es wäre nützlich, wenn ich nur ALLE (wirklich buchstäblich alle) Ausgaben deaktivieren könnte, außer was ich explizit ausdrucke, außer wenn es ein Problem gibt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen