from invoke.collection import Collection
from invoke.tasks import ctask
@ctask
def sub(ctx):
ctx.run('inv hello')
@ctask
def hello(ctx):
ctx.run('echo hello')
ns = Collection(sub, hello)
$ inv sub
hello
<stops to wait for a keypress here...>
Traceback (most recent call last):
File "/home/musttu/.virtualenvs/pyinv/bin/inv", line 11, in <module>
sys.exit(program.run())
File "/home/user/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/program.py", line 270, in run
self.execute()
File "/home/musttu/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/program.py", line 379, in execute
executor.execute(*self.tasks)
File "/home/musttu/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/executor.py", line 114, in execute
result = call.task(*args, **call.kwargs)
File "/home/musttu/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/tasks.py", line 113, in __call__
result = self.body(*args, **kwargs)
File "/home/musttu/Temp/tasks.py", line 12, in hello
ctx.run('echo hello')
File "/home/musttu/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/context.py", line 53, in run
return runner_class(context=self).run(command, **kwargs)
File "/home/musttu/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/runners.py", line 232, in run
raise ThreadException(exceptions)
invoke.exceptions.ThreadException:
Saw 1 exceptions within threads (OSError):
Thread args: {'kwargs': {'input_': <open file '<stdin>', mode 'r' at 0x7fee83ac00c0>},
'target': <bound method Local.handle_stdin of <invoke.runners.Local object at 0x7fee81e7d390>>}
Traceback (most recent call last):
File "/home/musttu/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/runners.py", line 804, in run
super(_IOThread, self).run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/musttu/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/runners.py", line 433, in handle_stdin
self.write_stdin(self.encode(data))
File "/home/musttu/.virtualenvs/pyinv/local/lib/python2.7/site-packages/invoke/runners.py", line 653, in write_stdin
return os.write(fd, data)
OSError: [Errno 32] Broken pipe
In 0.11.1 it works just ok.
The use case: While this example doesn't make much sense, in the real world, I'm invoking another invoke commands in sub-directories from a "master" tasks.py.
On linux, python 2.7 and invoke==0.12:
Works:
Fails:
In 0.11.1 it works just ok.
The use case: While this example doesn't make much sense, in the real world, I'm invoking another invoke commands in sub-directories from a "master" tasks.py.