2012-12-04 6 views
5

Vorrei utilizzare un comando Fabric per impostare un ambiente di sviluppo locale e, come parte di ciò, voglio essere in grado di configurare un git remote. Questo funziona bene:Interpretare (e utilizzare) l'output dal comando locale 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') 

Il problema nasce con l'esecuzione di questo una seconda volta - quando le bombe di comando locali, perché il telecomando esiste già. Mi piacerebbe evitare che questo controllando se la modalità remota prima:

In pseudocodice, mi piacerebbe fare quanto segue:

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

Come posso fare questo?

risposta

9

È possibile utilizzare il gestore settings contesto warn_only:

from fabric.context_managers import settings 

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

In alternativa, è possibile impostare la capture parola chiave arg sul local comando per 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

brillante - grazie mille per che userò 'capture = True', anche se penso che lasciarlo fallire sia probabilmente più pythonic (più facile chiedere perdono ... ecc.) –

+0

BTW _ Non credo che ti piacerebbe rispondere su questo su e anche tu - http://stackoverflow.com/questions/13713156/how-to-set-environment-variables-using-fabric –