mirror of
https://github.com/datafolklabs/cement.git
synced 2026-02-06 13:16:44 +00:00
78 lines
2.8 KiB
Plaintext
78 lines
2.8 KiB
Plaintext
NAME: Cement
|
|
|
|
CREATOR/MAINTAINER: BJ Dierkes <wdierkes@5dollarwhitebox.org>
|
|
|
|
DESCRIPTION:
|
|
|
|
Cement is an advanced CLI Application Framework for Python. It promotes code
|
|
re-use by way of plugins and helper libraries that can be shared between
|
|
any application built on Cement. The MVC and overall framework design is
|
|
very much inspired by the TurboGears2 web framework. Its goal is to introduce
|
|
a standard, and feature-full platform for both simple and complex command line
|
|
applications as well as support rapid development needs without sacrificing
|
|
quality.
|
|
|
|
At a minimum, Cement configures the following features for every application:
|
|
|
|
Multiple Configuration file parsing (default: /etc, ~/)
|
|
Command line argument and option parsing
|
|
Dual Console/File Logging Support
|
|
Full Internal and External (3rd Party) Plugin support
|
|
Basic "hook" support
|
|
Full MVC support for advanced application design
|
|
Text output rendering with Genshi templates
|
|
Json output rendering allows other programs to access your CLI-API
|
|
|
|
|
|
The above provides any level developer with a solid, and fully functional
|
|
cli application from the very start with more or less a single command via
|
|
the paster utility. Cement brings an end to the 'hack it out, and [maybe]
|
|
clean it up later' routine that we all find ourselves in under deadlines.
|
|
|
|
Any application can utilize existing plugins from the CementPlugins
|
|
project, or from other 3rd party resources to extend functionality. The
|
|
plugin system is designed to allow portability of re-usable code, and it
|
|
is encouraged to contribute any plugins back to the project to extend the
|
|
functionality of Cement.
|
|
|
|
The Cement CLI Application Framework is Open Source and is distributed under
|
|
the Python Software Foundation License. When creating plugins specifically
|
|
for re-use within the community, please be sure to follow the standard naming
|
|
convention "HelloWorld Plugin for Cement" as an example. The actual module
|
|
name should be 'cement.plugins.helloworld'.
|
|
|
|
|
|
GETTING STARTED:
|
|
|
|
Stable versions of Cement can be installed via the cheeze shop:
|
|
|
|
$ easy_install Cement
|
|
|
|
$ easy_install CementPlugins
|
|
|
|
|
|
Development versions of Cement can be checked out of Git:
|
|
|
|
$ git clone git://github.com/derks/cement.git
|
|
|
|
$ cd cement
|
|
|
|
$ python setup.py install
|
|
|
|
|
|
Additionally, Cement applications, plugins, and helpers can be created via
|
|
PasteScript. Once Cement is installed, the following command will create a
|
|
command line application built on top of the Cement Framework:
|
|
|
|
$ paster cement-app <myapp>
|
|
|
|
|
|
The following command will create an external plugin for your application:
|
|
|
|
$ paster cement-plugin <myapp> <myplugin>
|
|
|
|
|
|
Have a helper library you want to make pluggable?
|
|
|
|
$ paster cement-helper <myapp> <myhelper>
|