2013-09-05 8 views
5

나는 직물 스크립트에서 내 출력 색상을 시도하고, 그래서 이런 일을 수행컬러 출력

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

나는 파란색의 'HG 갱신'응답 인쇄이 예상을 대신 나는 파란색으로 다음 줄 'hg status'의 결과를 얻는다.

패브릭 문서에는 예기치 않게 작동하는 하드 코딩 된 문자열이있는 예제가 있습니다. 하나의 로컬 명령에 어떻게 응답 할 수 있는지에 대한 조언이 있습니까?

local("hg pull") 
res = local("hg update", capture=True) 
print(blue(res)) 
local("hg status") 

[편집] 당신은 또한 출력을 가져 오도록 capture=True 필요합니다

+1

새내기를위한 완전한 그림을 위해 : "from fabric.colors import blue, green, red'' (등)는 Fabric에서 색상을 가져옵니다. [the docs] (http://docs.fabfile.org/ko/latest/api/core/colors.html)를 참조하십시오. – Peterino

답변

6

이것은 내가 사용하는 것입니다.

+1

이제 작동합니다 (capture = True). print (blue (local ""hg update ", capture = True))와 같이 한 행에이 글을 쓰려고 시도하고 여전히 파란색으로 출력을 인쇄합니다. 고마워요! – Grzegorz

3

패브릭의 색상 기능은 명령 출력이 아닌 간단한 문자열 용입니다.

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)을 사용하는 것입니다 실현하려하는 또 다른 방법을하지만, 명령이 완료 될 때까지 당신은 (help on local command를) 출력을 볼 수 없습니다 :하지만 당신은 색상에 대한 자신의 상황에 맞는 관리자를 구현할 수 있습니다.

+0

이렇게하면'SyntaxError : invalid syntax'이'end = ""'를 가리키고 있습니다. –