[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Fab-user] invoke() is broken.
From: |
Niklas Lindström |
Subject: |
Re: [Fab-user] invoke() is broken. |
Date: |
Sun, 26 Oct 2008 15:50:14 +0200 |
Hi,
I believe this is because `invoke` (actually, `_execute_command`)
cannot be called in a nested fashion, as I just wrote in reply to your
suggestion to remove `require`. Where I suggest to remove `invoke` and
integrate it into "@depends".
I actually sort of expected this when I wrote the "call chain"
mechanism, but I left `invoke` behind in spite of it.. Previous to the
call chain I made connections hashable and reworked `_connect` to say
if it actually connected etc. But that got very hairy, so I added call
chain instead (which is closer to how it works when you supply a list
of commands to the fab command).
I hope this'll solve the problem.
Best regards,
Niklas
On Sun, Oct 26, 2008 at 3:33 PM, Christian Vest Hansen
<address@hidden> wrote:
> Niklas & Jeff,
>
> It seems that the `invoke()` operation and the way commands are
> called, etc. interacts in mysterious ways. I can't seem to figure out
> why things fail, but I have compiled the following list of ways
> `invoke()` can break:
>
>
> # Illustrates how the `invoke()` operation is broken.
> config.fab_hosts=['localhost']
> def a():
> run("echo a")
>
> # Works:
> @depends(a)
> def b1():
> run("echo b1")
>
> # Broken, a() called twice, no b2:
> def b2():
> invoke(a)
> run("echo b2")
>
> # Works:
> def b3():
> a()
> run("echo b3")
>
> # Works:
> @depends(b1)
> def c11():
> run("echo c11")
>
> # Semi-works, b2 still breaks:
> @depends(b2)
> def c12():
> run("echo c12")
>
> # Works:
> @depends(b3)
> def c13():
> run("echo c13")
>
> # Broken, a() called twice, no c21:
> def c21():
> invoke(b1)
> run("echo c21")
>
> # Totally broken, a() called thrice:
> def c22():
> invoke(b2)
> run("echo c22")
>
> # Broken, a() called twice, no c23:
> def c23():
> invoke(b3)
> run("echo c23")
>
> # Broken, a() not called:
> def c31():
> b1()
> run("echo c31")
>
> # Broken, a() called twice, then stops:
> def c32():
> b2()
> run("echo c32")
>
> # Works:
> def c33():
> b3()
> run("echo c33")
>
>
>
> --
> Venlig hilsen / Kind regards,
> Christian Vest Hansen.
>
>
> _______________________________________________
> Fab-user mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/fab-user
>