fab-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Fab-user] Can't find in the docs, return codes


From: Jeff Forcier
Subject: Re: [Fab-user] Can't find in the docs, return codes
Date: Wed, 12 Jun 2013 16:57:47 -0700

Yea, the docs for it aren't great. v2 will have actual, publicly
documented classes for all of this kind of thing, instead of multiple
printed-pages' worth of paragraphs in the run() docstring :) sorry!

Best,
Jeff

On Wed, Jun 12, 2013 at 3:32 PM, Eric Brunson <address@hidden> wrote:
>
> That's definitely it, I wasn't reading closely enough.
>
> What threw me off that I checked the type of the object returned by run()
> and the looked at pydoc for fabric.operations._AttributeString.  I thought
> it would have included the class attributes and methods defined in the
> module, but only saw the methods inherited from string.
>
> Looking at operations.py I now see that they're added dynamically so
> wouldn't show up in the pydoc.  If I do a dir(result) I can see them.
>
> Thanks for pointing that out.
>
>
> On 06/12/2013 03:58 PM, Jeff Forcier wrote:
>>
>> I must not be following, why doesn't result.succeeded / result.failed
>> work for this use case? Or doing e.g. "if result.return_code not in
>> [0, 1]"?
>>
>> See ~third paragraph off
>>
>> http://docs.fabfile.org/en/1.6/api/core/operations.html#fabric.operations.run
>>
>> On Wed, Jun 12, 2013 at 2:45 PM, Eric Brunson <address@hidden> wrote:
>>>
>>> I'm hoping to start a discussion of behavior that would aid in
>>> implementing
>>> flow control.  I've only been using fabric for a couple of months, so
>>> maybe
>>> I just need some education on better coding patterns.
>>>
>>> What I'd like to be able to do is something like this:
>>>
>>> def remove_backups(path):
>>>      with settings(warn_only=True), hide('warnings'):
>>>          result = run('[ -d %s ]' % path)
>>>          if ! result.error_code:
>>>              with cd(path):
>>>                  run('rm *.bak')
>>>
>>> Or possibly:
>>>
>>> def remove_backups(path):
>>>      try:
>>>          run('[ -d %s ]' % path)
>>>      except NonZeroExitCode:
>>>          print("no backup dir")
>>>          return
>>>
>>>      with cd(path):
>>>          run('rm *.bak')
>>>
>>>
>>> I end up having to do something like this:
>>>
>>> def remove_backups(path):
>>>      with settings(warn_only=True), hide('stderr','warnings'):
>>>          result = run('[ -d %s ] && echo true' % path)
>>>      if result == 'true':
>>>          run('rm *.bak')
>>>
>>>
>>> Which is less than pythonic.
>>>
>>> Has there ever been discussion of throwing exceptions or handling exit
>>> codes
>>> rather than the default "Abort unless otherwise instructed?" tactic as it
>>> currently exists?  Constructing intelligent flow control gets really
>>> messy
>>> in the current implementation.
>>>
>>> Other than that, I've been using the crap out of the application and
>>> think
>>> it's great.  Thanks for all the hard work.
>>>
>>> Sincerely,
>>> e.
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Fab-user mailing list
>>> address@hidden
>>> https://lists.nongnu.org/mailman/listinfo/fab-user
>>>
>>
>>
>
>
> _______________________________________________
> Fab-user mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/fab-user



-- 
Jeff Forcier
Unix sysadmin; Python/Ruby engineer
http://bitprophet.org



reply via email to

[Prev in Thread] Current Thread [Next in Thread]