Skip to main content

Lightweight Python Build Tool.

Project description

Calum J. Eadie (www.calumjeadie.com)

Features

  • Really quick to learn.

  • Manages dependancies between tasks.

  • Automatically generates a command line interface.

Installation

You can install microbuild from the Python Package Index (PyPI) or from source.

Using pip:

$ pip install microbuild

Using easy_install:

$ easy_install microbuild

Example

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 @ignore decorator.

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" ]

Contributing

microbuild is hosted at https://github.com/CalumJEadie/microbuild and contributions are very welcome.

epydoc is used for documentation generation and unittest for tests.

Run build.py apidoc to generate documentation and build.py test to run all unit tests.

Raghunandan Rao has made some great contributions, including Rake style parameter passing to tasks and running tasks by typing the first few characters. You can check these out at the pynt fork.

License

microbuild is licensed under a MIT license. See LICENSE.txt.

Changes

0.3.1,0.3.2 - 15/12/2012

  • Improved README documentation.

0.3.0 - 18/09/2012

  • Fixed bug in logging. No longer modifies root logger.

  • Added ignore functionality.

  • Extended API documentation.

0.2.0 - 29/08/2012

  • Added progress tracking output.

  • Added handling of exceptions within tasks.

0.1.0 - 28/08/2012

  • Initial release.

  • Added management of dependancies between tasks.

  • Added automatic generation of command line interface.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

microbuild-0.3.2.tar.gz (5.6 kB view details)

Uploaded Source

File details

Details for the file microbuild-0.3.2.tar.gz.

File metadata

  • Download URL: microbuild-0.3.2.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for microbuild-0.3.2.tar.gz
Algorithm Hash digest
SHA256 e5f9093c26bf1a3839976b660f65f4e131b50b869f4bbd72f8f1367147457815
MD5 de57a619c8b95944b7faa0a1033c60e4
BLAKE2b-256 3f6c8f225922c662cbe99112fa7470a46965e63dc1c45af7855e8341a50bf55e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page