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.
- Rake style parameter passing to tasks.
- Running tasks by typing the first few characters.
- Breaking up script into modules.
You can install microbuild from the Python Package Index (PyPI) or from source.
$ pip install microbuild
$ easy_install microbuild
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,ignore,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" ]
microbuild is hosted at https://github.com/CalumJEadie/microbuild and contributions are very welcome.
build.py apidoc to generate documentation and
build.py test to run all unit
microbuild is licensed under a MIT license. See LICENSE.txt.