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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for collective.recipe.shelloutput-0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac55a6605fcd2f68af6565778a056ffc7c1a7a02390ffe940112c0d467f1ede9 |
|
MD5 | 2af0bb173c845f3710bacc1562d71dbf |
|
BLAKE2b-256 | 04528d4a23a109c9781886c718ee5eb43cfede498303ded42c5877c743915a9b |