sprockets.cli/README.rst

123 lines
3.8 KiB
ReStructuredText
Raw Normal View History

sprockets.cli
=============
The sprockets CLI interface for running applications. Applications are meant
to be run by a controller that is managed by the sprockets CLI interface.
The sprockets CLI interface loads controller applications that are registered
using setuptools entry points.
|Version| |Downloads| |Status| |Coverage| |License|
Example CLI Usage
-----------------
2014-10-14 20:43:01 +00:00
Help:
2014-10-14 20:38:59 +00:00
.. code::
# sprockets --help
usage: sprockets [-h] [--apps] [--plugins] [-e [PLUGIN]] [-s] [-v] [--version]
CONTROLLER ... [APP]
Command line tool for starting a Sprockets application
positional arguments:
CONTROLLER Available sprockets application controllers
http HTTP Application Controller
amqp RabbitMQ Worker Controller
APP Application to run
optional arguments:
-h, --help show this help message and exit
--apps List installed applications
--plugins List installed plugins
-e [PLUGIN], --enable [PLUGIN]
Enable a plugin
-s, --syslog Log to syslog
-v, --verbose Verbose logging output, use -vv for DEBUG level
logging
--version show program's version number and exit
Find more Sprockets controllers and plugins at
https://sprockets.readthedocs.org
2014-10-14 20:43:01 +00:00
Starting a Web App with the NewRelic plugin:
2014-10-14 20:38:59 +00:00
.. code::
2014-10-14 20:38:59 +00:00
# sprockets -e newrelic http my_web_app
Controllers
-----------
Each controller is expected to expose at least a ``main(application, args)``
method that would be invoked when starting the application. Additional, a
controller can implement a ``add_cli_arguments(parser)`` method that will be
invoked when setting up the command line parameters. This allows controllers
to inject configuration directives into the cli.
Controller API Summary:
2014-10-14 20:38:59 +00:00
.. code:: python
module.add_cli_arguments(ArgumentParser) # optional
module.main(app_module, argparse.Namespace)
Plugins
-------
Plugins are able to inject themselves at multiple points in the application
lifecycle. Plugins that implement a ``initialization(controller)`` method will
see that method invoked before a controller is started. In addition, if a
``on_startup(controller)`` method is defined, it will be invoked after a
Controller has started a application. Finally if a ``on_shutdown(controller)``
method is defined, it will be invoked when a controller has shutdown.
Plugin API Summary:
2014-10-14 20:38:59 +00:00
.. code:: python
plugin.initialize(controller_module) # optional
plugin.on_start(controller_module) # optional
plugin.on_shutdown(controller_module) # optional
Example Entrypoints
-------------------
Controller:
2015-06-12 20:35:42 +00:00
.. code:: python
{'sprockets.controller': ['http=sprockets.controllers.http:None']},
Application:
2015-06-12 20:35:42 +00:00
.. code:: python
2015-06-12 20:36:32 +00:00
{'sprockets.http.app': ['app-name=package.or.module:None']}
(Replace ``app-name`` with the name of your application)
Applications
------------
Applications can be a python package or module and if they are registered
to a specific controller, can be referenced by an alias. Application contracts
vary by controller.
2014-10-14 20:38:59 +00:00
.. |Version| image:: https://badge.fury.io/py/sprockets.cli.svg?
:target: http://badge.fury.io/py/sprockets.cli
2014-10-14 20:38:59 +00:00
.. |Status| image:: https://travis-ci.org/sprockets/sprockets.cli.svg?branch=master
:target: https://travis-ci.org/sprockets/sprockets.cli
2014-10-14 20:38:59 +00:00
.. |Coverage| image:: https://coveralls.io/repos/sprockets/sprockets.cli/badge.png
:target: https://coveralls.io/r/sprockets/sprockets.cli
2014-10-14 20:38:59 +00:00
.. |Downloads| image:: https://pypip.in/d/sprockets.cli/badge.svg?
:target: https://pypi.python.org/pypi/sprockets.cli
2014-10-14 20:38:59 +00:00
.. |License| image:: https://pypip.in/license/sprockets.cli/badge.svg?
:target: https://sprockets.readthedocs.org