microbuild - Lightweight Python Build Tool.
Calum J. Eadie (www.calumjeadie.com)
- Really quick to learn.
- Manages dependancies between tasks.
- Automatically generates a command line interface.
The build script is written in pure Python and microbuild takes care of managing any dependancies between tasks and generating a command line interface.
Tasks are just regular Python functions marked with the
@task() decorator. Dependancies
are specified with
@task() too. Tasks can be ignored with the
After defining all tasks
build(sys.modules[__name__],sys.argv[1:]) is called to
run the build.
# example.py import sys from microbuild.microbuild import task,build @task() def clean(): """Clean build directory.""" print "Cleaning build directory..." @task(clean) def html(): """Generate HTML.""" print "Generating HTML..." @ignore @task(clean) def images(): """Prepare images.""" print "Preparing images..." @task(html,images) def android(): """Package Android app.""" print "Packaging android app..." if __name__ == "__main__": build(sys.modules[__name__],sys.argv[1:])
The command line interface and help is automatically generated. Task descriptions are extracted from function docstrings.
$ ./example.py -h usage: example.py [-h] task positional arguments: task perform specified task and all it's dependancies optional arguments: -h, --help show this help message and exit tasks: android Package Android app. clean Clean build directory. html Generate HTML. images Prepare images.
Dependancies between tasks are taken care of too.
$ ./example.py android [ example.py - Starting task "clean" ] Cleaning build directory... [ example.py - Completed task "clean" ] [ example.py - Starting task "html" ] Generating HTML... [ example.py - Completed task "html" ] [ example.py - Ignoring task "images" ] [ example.py - Starting task "android" ] Packaging android app... [ example.py - Completed task "android" ]
You can install microbuild from the Python Package Index (PyPI) or from source.
$ pip microbuild
$ easy_install microbuild
microbuild is licensed under a MIT license. See LICENSE.txt.