2012-12-04 12 views
5

Ich möchte einen Fabric-Befehl verwenden, um eine lokale Entwicklungsumgebung einzurichten, und als Teil davon möchte ich eine Git-Remote einrichten. Dies funktioniert gut:Interpretieren (und verwenden) die Ausgabe von Fabric lokalen Befehl

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') 

Das Problem kommt mit dieser ein zweites Mal ausgeführt wird - wenn die lokalen Befehl Bomben, weil die Fernbedienung ist bereits vorhanden. Ich möchte dies verhindern, indem geprüft wird, ob die Fern ersten vorhanden ist:

In Pseudo-Code, ich möchte folgendes tun:

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

Wie kann ich das tun?

Antwort

9

Sie können das settings Kontext-Manager warn_only:

from fabric.context_managers import settings 

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

Alternativ können Sie das capture Schlüsselwort arg auf die eingestellte local Befehl 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 - vielen Dank für das - ich werde 'capture = True' verwenden, obwohl ich denke, es scheitern zu lassen, ist wahrscheinlich pythonischer (einfacher um Verzeihung zu bitten ... etc.) –

+0

BTW _ Ich nehme an, du würdest das nicht gerne beantworten Ebenso würden Sie - http://stackoverflow.com/questions/13713156/how-to-set-environment-variables-using-fabric –