
Supported options
*****************

The recipe supports the following options:

on_install

   true if the commands must run on install

on_update

   true if the commands must run on update

cmds

   a set of command lines

uninstall_cmds

   a set of command lines executed in the buildout uninstall phase

shell

   a valid interpreter (POSIX only)


Example usage
*************

We need a config file:

   >>> cfg = """
   ... [buildout]
   ... parts = cmds
   ...
   ... [cmds]
   ... recipe = collective.recipe.cmd
   ... on_install=true
   ... cmds= %s
   ... """

   >>> test_file = join(sample_buildout, 'test.txt')
   >>> cmds = 'echo "bouh" > %s' % test_file
   >>> write(sample_buildout, 'buildout.cfg', cfg % cmds)

Ok, so now we can touch a file for testing:

   >>> print system(buildout)
   Installing cmds.

   >>> 'test.txt' in os.listdir(sample_buildout)
   True

And remove it:

   >>> test_file = join(sample_buildout, 'test.txt')
   >>> if sys.platform == 'win32':
   ...    cmds = 'del %s' % test_file
   ... else:
   ...    cmds = 'rm -f %s' % test_file
   >>> write(sample_buildout, 'buildout.cfg', cfg % cmds)

   >>> print system(buildout)
   Uninstalling cmds.
   Running uninstall recipe.
   Installing cmds.

   >>> 'test.txt' in os.listdir(sample_buildout)
   False

We can run more than one commands:

   >>> if sys.platform == 'win32':
   ...     cmds = '''
   ... echo "bouh" > %s
   ... del %s
   ... ''' % (test_file, test_file)
   ... else:
   ...     cmds = '''
   ... echo "bouh" > %s
   ... rm -f %s
   ... ''' % (test_file, test_file)

   >>> test_file = join(sample_buildout, 'test.txt')
   >>> if sys.platform == 'win32':
   ...     cmds = 'del %s' % test_file
   ... else:
   ...     cmds = 'rm -f %s' % test_file
   >>> write(sample_buildout, 'buildout.cfg', cfg % cmds)

   >>> print system(buildout)
   Updating cmds.

   >>> 'test.txt' in os.listdir(sample_buildout)
   False

We can also run some python code:

   >>> cfg = """
   ... [buildout]
   ... parts = py py2
   ...
   ... [py]
   ... recipe = collective.recipe.cmd:py
   ... on_install=true
   ... cmds=
   ...   >>> sample_buildout = buildout.get('directory', '.')
   ...   >>> print sorted(os.listdir(sample_buildout))
   ...   >>> os.remove(os.path.join(sample_buildout, ".installed.cfg"))
   ...   >>> print sorted(os.listdir(sample_buildout))
   ... [py2]
   ... recipe = collective.recipe.cmd:py
   ... on_install=true
   ... cmds=
   ...   >>> def myfunc(value):
   ...   ...     return value and True or False
   ...   >>> v = 20
   ...   >>> print myfunc(v)
   ... """

   >>> write(sample_buildout, 'buildout.cfg', cfg)

Ok, so now we run it:

   >>> print system(buildout)
   Uninstalling cmds.
   Running uninstall recipe.
   Installing py.
   ['.installed.cfg', 'bin', 'buildout.cfg', 'develop-eggs', 'eggs', 'parts']
   ['bin', 'buildout.cfg', 'develop-eggs', 'eggs', 'parts']
   Installing py2.
   True
