Source code for bolt.tasks.bolt_setup

"""
setup
-----

The ``setup`` task provides an automation hook to execute ``setup.py``
commands and options inside of Bolt. The task, in its simplest form,
assumes a default ``setup.py`` in the current working directory and
uses a ``build`` command as a default if no configuration is provided.

The task configuration allows spcifying a setup script, which by 
default will be set to ``setup.py`` if no script is specified, a valid
command, and it command arguments. The following example shows how to
configure the task. ::

    config = {
		'setup':{
			'script': 'special_setup.py',
			'command': 'install',
			'options': {
				'verbose': True,
				'dry-run': True
			}
		}
    }
"""
import distutils.core as dcore
import logging

import bolt.api as api
import bolt.utils as utilities

DEFAULT_ARGUMENTS = ['build']
DEFAULT_SETUP_SCRIPT = 'setup.py'


[docs]class ExecuteSetupTask(api.Task): def _configure(self): self.setup_script = self._optional('script') if self.setup_script: self.config['script'] = False else: self.setup_script = DEFAULT_SETUP_SCRIPT generator = _SetupArgumentGenerator() self.args = generator.generate_from(self.config) def _execute(self): result = self._execute_setup() if not result.dist_files: raise BuildSetupError() def _execute_setup(self): return dcore.run_setup(self.setup_script, self.args)
def register_tasks(registry): registry.register_task('setup', ExecuteSetupTask()) class _SetupArgumentGenerator(utilities.CommonCommandAndArgumentsGenerator): def __init__(self): return super(_SetupArgumentGenerator, self).__init__(DEFAULT_ARGUMENTS)
[docs]class BuildSetupError(api.TaskFailedError): def __repr__(self): return 'BuildSetupError({code})'.format(code=self.code)