5

ファブリック スクリプトからの出力に色を付けようとしているので、次のようにします。

local("hg pull")
print(blue(local("hg update")))
local("hg status")

「hg update」応答が青色で出力されることを期待していましたが、代わりに次の行「hg status」の結果が青色で表示されます。

Fabric のドキュメントには、ハードコードされた文字列に色を付ける例があり、期待どおりに機能します。単一のローカル コマンドに対する応答を色分けする方法について何かアドバイスはありますか?

4

2 に答える 2

3

fabric の色関数は単純な文字列用であり、コマンド出力用ではありません。ただし、カラーリング用に独自のコンテキスト マネージャーを実装できます。

from contextlib import contextmanager
BLUE = 34  # https://github.com/fabric/fabric/blob/1.7/fabric/colors.py#L40

@contextmanager
def colored_output(color):
    print("\033[%sm" % color, end="")
    yield
    print("\033[0m", end="")

with colored_output(BLUE):
    local("hg update")

目標を達成する別の方法は を使用するlocal(..., capture=True)ことですが、コマンドが終了するまで出力は表示されません (ローカル コマンドのヘルプ)。

于 2013-09-05T11:56:19.190 に答える