2012-12-04 12 views
5

Chciałbym użyć polecenia Fabric, aby skonfigurować lokalne środowisko programistyczne, a jako część tego chcę móc skonfigurować pilota git. To działa dobrze:Interpretuj (i używaj) danych wyjściowych z lokalnego polecenia Fabric

from fabric.api import local 

def set_remote(): 
    """ Set up git remote for pushing to dev.""" 
    local('git remote add myremote [email protected]:myrepo.git') 

Problem polega na uruchomieniu tego po raz drugi - kiedy lokalna komenda bomba, ponieważ pilot już istnieje. Chciałbym tego uniknąć poprzez sprawdzenie, czy istnieje zdalna pierwszy:

W Pseudokod, chciałbym wykonać następujące czynności:

if 'myremote' in local('git remote'): 
    print 'Remote \'myremote\' already exists.' 
else: 
    local('git remote add myremote [email protected]:myrepo.git') 

Jak mogę to zrobić?

Odpowiedz

9

Można użyć menedżera settings kontekstowego warn_only:

from fabric.context_managers import settings 

with settings(warn_only=True): 
    # some command we are all right with having fail 

Alternatywnie, można ustawić ARG capture kluczowego na local polecenie True:

if 'myremote' in local('git remote', capture=True): 
    print 'Remote \'myremote\' already exists.' 
else: 
    local('git remote add myremote [email protected]:myrepo.git') 
+0

Brilliant - bardzo dziękuję za to - użyję 'capture = True', chociaż myślę, że pozwolenie na niepowodzenie jest prawdopodobnie bardziej pythonic (łatwiej poprosić o przebaczenie ... itd.) –

+0

BTW _ Nie sądzę, że chciałbyś odpowiedzieć na to e równie dobrze - http://stackoverflow.com/questions/13713156/how-to-set-environment-variables-using-ababric –

Powiązane problemy