fab-user
[Top][All Lists]
Advanced

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

Re: [Fab-user] Shell Command?


From: Jeff Forcier
Subject: Re: [Fab-user] Shell Command?
Date: Tue, 26 May 2009 07:16:55 -0400

On Mon, May 25, 2009 at 9:53 PM, Jorge Vargas <address@hidden> wrote:
>
> errr I was actually thinking of something along the lines of
>
> <snip>
>
> that is run the interperter or shell on the Target machine rather than
> local. And it will somehow give you back the input/output buffers.

Ah, well that's not what the old shell used to do, and I don't know
for sure but I don't think Cap's shell does this either. You can see
the old 'fab shell' command here:
http://github.com/bitprophet/fabric/blob/a1ef88bfc80f5cd9b7a225a2c07a11da2d47ff60/fabric.py#L887

So in other words, all it was was an interactive way to call Fabric
operations, not a way to get interactivity with the remote commands,
which is what you seem to be asking for. I do want to get better
interactivity at some point (largely through improved prompt
detection) but I believe that's a more ambitious goal involving more
work.

Also not convinced that it would be truly *worth* the work given that
I imagine it to be a bit of an edge case -- in just how many scenarios
is it *really* necessary to have that feature in order to avoid simply
making a new terminal window/tab and manually ssh-ing to the system in
question? Some, of course, but I'm not sure if it's enough to justify
what could be quite the chore and a rather blatant reinvention of the
wheel :)

(And note that I mean that literally: I'm "not sure". I'd love to have
a Fabric where you *do* get a nice interactive shell when things go
wrong, and are still able to interface with the environment set up by
your Fab tasks; but if it turned out to be a lot of work, I am not
sure it would be worth it.)

> this is also nice. but not as good as you will have to do run() around
> each command.

I disagree here: the point of having the full Python shell and "having
to" call run() or whatnot, is that inevitably with a shell that
translates to "everything gets sent to a run() call", you will want to
start changing options temporarily, or use sudo() instead of run(), or
etc. At which point just using iPython or a derivative makes much more
sense (especially since tab-completion means typing out "run" isn't
even fully necessary).

-Jeff




reply via email to

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