Skip to main content

Execute shell commands and reuse the output in another part of the buildout.

Project description

This recipe is for execute shell commands and get the output in another part of the buildout. The commands are defined in a section called commands, one per line and the output can be referenced from other parts using the ${…} syntax.

>>> write('dummy.py',
... '''
... class Recipe(object):
...
...     def __init__(self, buildout, name, options):
...         self.options = options
...
...     def install(self):
...         if 'output_1' in self.options:
...             print self.options['output_1']
...         if 'output_2' in self.options:
...             print self.options['output_2']
...         return ()
...
...     def update(self):
...         pass
... ''')
>>> write('setup.py',
... '''
... from setuptools import setup
...
... setup(name='dummyrecipe',
...       entry_points = {'zc.buildout': ['default = dummy:Recipe']})
... ''')
>>> write('buildout.cfg',
... '''
... [buildout]
... develop = .
... parts =
...     shelloutput
...     use-shelloutput
... offline = true
...
... [shelloutput]
... recipe = collective.recipe.shelloutput
... commands =
...     echo_1 = echo 'ECHO'
...     echo_2 = echo 'The shell says: hello.'
...
... [use-shelloutput]
... recipe = dummyrecipe
... output_1 = ${shelloutput:echo_1}
... output_2 = ${shelloutput:echo_2}
... ''')
>>> print system(join('bin', 'buildout')),
Develop: '/sample-buildout/.'
Installing shelloutput.
Installing use-shelloutput.
ECHO
The shell says: hello.

If we give an empty command we get a hint.

>>> write('buildout.cfg',
... '''
... [buildout]
... develop = .
... parts =
...     shelloutput
...     use-shelloutput
... offline = true
...
... [shelloutput]
... recipe = collective.recipe.shelloutput
... commands =
...     empty-cmd =
...
... [use-shelloutput]
... recipe = dummyrecipe
... output_1 = ${shelloutput:empty-cmd}
... ''')
>>> print system(join('bin', 'buildout')),
  Develop: '/sample-buildout/.'
  Uninstalling use-shelloutput.
  Uninstalling shelloutput.
  Installing shelloutput.
  Installing use-shelloutput.
  Empty command 'empty-cmd', no output generated.

If the execution of a command generates an error, we get the error message.

>>> write('buildout.cfg',
... '''
... [buildout]
... develop = .
... parts =
...     shelloutput
...     use-shelloutput
... offline = true
...
... [shelloutput]
... recipe = collective.recipe.shelloutput
... commands =
...     date = date -invalid-option
...
... [use-shelloutput]
... recipe = dummyrecipe
... output_1 = ${shelloutput:date}
... ''')
>>> print system(join('bin', 'buildout')),
Develop: '/sample-buildout/.'
Uninstalling use-shelloutput.
Uninstalling shelloutput.
Installing shelloutput.
Installing use-shelloutput.
Error 'date: invalid option ... for command 'date'...

Change history

0.1 (2010-09-21)

  • Initial release. [j23d]

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

collective.recipe.shelloutput-0.1.tar.gz (4.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page