Fabric: タスクレベルのhide( 'running')が壊れています

作成日 2011å¹´08月25日  Â·  9コメント  Â·  ソース: fabric/fabric

1)「タスクの実行...」のようなものを隠しません。
2)最後の出力から改行を削除して、次の出力行に結合します

fabfileは次のとおりです。
@仕事
def show_hostname():
設定あり(hide( 'running')):
run( 'ホスト名')
run( 'date')

%/ opt / python-2.7 / bin / fab -f output.py -H x1、x2 show_hostname
[x1]タスク 'show_hostname'を実行しています
[x1]出力:x1mydomain.de
[x1] out:[x1] out:Thu Aug 25 10:34:10 CEST 2011
[x1] out:[x2]タスク 'show_hostname'を実行しています
[x2]出力:x2.mydomain.de
[x2] out:[x2] out:Thu Aug 25 10:34:11 CEST 2011
[x2]アウト:
完了。

そして私たちがそれにいる間:

3)たとえば、run( 'hostname')は、常に次のように空の行を出力します。

[h1]タスク「show_hostname」を実行しています
[h1]出力:h1.mydomain.de
[h1]アウト:

3)目的によるものであり、その空の行から1,2の問題が発生していますか?

ありがとう、
スヴェン

最も参考になるコメント

  • 「完了」を非表示にする方法。 完了後に印刷されますか?
  • 「my.server.comからの切断...完了」も非表示にする方法は?

問題がある場合を除いて、明示的に出力するものを除いて、すべて(実際には文字通りすべて)の出力を無効にできると便利です。

全てのコメント9件

あなたが生地を見れば。 main:main 、タスクの_外_で「実行中」が発生するのがわかります。これが、非表示によって非表示にされない理由です。 回避策(グローバル!)として、fabric.state.output ['running'] = Falseを設定するか、-hide = runningを渡すことができます。

グレッグは正しいです:実行中-「実行中」の行が印刷されるため、グローバル設定である必要があります-それはひどく直感的ではないことを認め、それを回避するより良い方法があればいいのにと思います。 (新しいスタイルのタスクに対してそれを行う1つの方法を考えることができますが、現時点では、2つのタイプ間の動作の違いを増やす価値があるかどうかはわかりません...)

stdoutブロックの終わりにある改行は意図的にIIRCですが、明示的に挿入しているのか、それとも実際にリモートエンドからのものなのか(そして新しい行プレフィックスをトリガーしているだけなのか)思い出せません。それ自体はバグではないと思います。

「欠落している」改行は関連している可能性があります-私は再確認する必要があります。 どういうわけか醜く見えて、醜さをあまり一般的ではないケースに移さなければならなかった状況かもしれません。

このバグ/ UIの不整合に関する更新はありますか? ファブリックを介してファイルをテール化しようとしていますが、これらの「[hostname]」出力をマスクすると便利です。

fabric.state.output['running'] = Falseを試しましたが、何も変わりません。

@charlax fab --hide=runningを使用すると、実行の最初からその出力レベルがオフになるため、タスク自体の内部から非表示にできないすべての「実行中のタスクx」を非表示にする必要があります。 以前のコメントでこれについて言及しなかった理由がわかりません。

また、あなたが言及したfabric.state.output変更を、fabfileのモジュール(トップ)レベルで行うことができるはずです-試したときに正確にどこに配置しましたか? タスク内にある場合でも機能しません。

ああ、実際に私がやろうとしているのは、誤解してすみません、 [host.com] out:部分を隠すことです。

行のその部分を_ちょうど_意味しますか? そのためのプライベート構成設定がありますが、fab 2.0がリリースされる前に変更されることはないので、秘密を教えてあげましょう。 env.output_prefix 、Falseに設定すると、行プレフィックスなしでリテラルstdout / stderrを出力します。

ありがとう!

@hosts()デコレータは、の無効化を強制することなく、実行中の出力の「ホスト」部分を非表示にできるようにする必要があるようです。

fabric.state.output['running']

グローバルに。 これにより、単一のメソッドのenv.hostsをオーバーライドできるようになります。 空のイテレータ(またはNone)に設定すると、ホストを出力しないlocal_only実行がトリガーされるため、env.hostsとして動作する必要があるようです。 現在、 @ hostsの空のイテレータは無視され、env.hostsの使用にフォールバックします。 それが引っ張られるならば、私はパッチを書きます。

  • 「完了」を非表示にする方法。 完了後に印刷されますか?
  • 「my.server.comからの切断...完了」も非表示にする方法は?

問題がある場合を除いて、明示的に出力するものを除いて、すべて(実際には文字通りすべて)の出力を無効にできると便利です。

このページは役に立ちましたか?
0 / 5 - 0 評価