BIG HONKIN' DISCLAIMER: This software is currently in beta. It's test-driven and dogfooded, but feature set & documentation has holes & rough spots. Please make sure you search the known issues before submitting new bug reports -- we already know it doesn't do X, Y and Z and will be sprinting to beef things up ASAP.
Thank you!
Invoke is a Python (2.6+ and 3.2+) task execution tool & library, drawing inspiration from various sources to arrive at a powerful & clean feature set.
Like Ruby's Rake tool and Invoke's own predecessor Fabric 1.x, it provides a clean, high level API for running shell commands and defining/organizing task functions from a
tasks.py
file:from invoke import run, task @task def clean(docs=False, bytecode=False, extra=''): patterns = ['build'] if docs: patterns += 'docs/_build' if bytecode: patterns += '**/*.pyc' if extra: patterns += extra for pattern in patterns: run("rm -rf %s" % pattern) @task def build(docs=False): run("python setup.py build") if docs: run("sphinx-build")
From GNU Make, it inherits an emphasis on minimal boilerplate for common patterns and the ability to run multiple tasks in a single invocation:
$ invoke clean build
Following the lead of most Unix CLI applications, it offers a traditional flag-based style of command-line parsing, deriving flag names and value types from task signatures (optionally, of course!):
$ invoke clean --docs --bytecode build --docs --extra='**/*.pyo' $ invoke clean -d -b build --docs -e '**/*.pyo' $ invoke clean -db build -de '**/*.pyo'
Like many of its predecessors, it offers advanced features as well -- namespacing, task aliasing, before/after hooks, parallel execution and more.
For documentation, including detailed installation information, please see
http://docs.pyinvoke.org. Post-install usage information may be found in invoke
--help
.
You can install the development version via pip
install invoke==dev
.