Craft - Like Makefile, but in Python.
Craft is like Makefile, except everything is in native Python.
pip install craft
Craft works on Python 2.7+ and Python 3.2+.
Craft will read attempt to read crafty.py in the current directory or the environment variable $CRAFTFILE.
An example crafty.py:
from craft import task, depends @task @depends('bar', 'foo') def cake(): """ Prints cake, and depends on foo & bar to run first """ print('Time for cake') @task def bar(): """ Prints bar """ print('bar') @task def foo(): print("Hi,I'm foo") @task def auto(): """ I will run when you supply no arguments to "craft". """ print("Auto - Doing my own thing. Which is 'foo' today.") foo() @task def setup(): """ I will run once on any call to "craft" """ print("Hello good sir, I'm the setup routine.")
Running craft -h in the directory containing crafty.py will show the list of available tasks. Example:
usage: craft [-h] [task [task ...]] positional arguments: task optional arguments: -h, --help show this help message and exit Available tasks: - cake: Prints cake, and depends on foo & bar to run first - auto: I will run when you supply no arguments to "craft". - setup: I will run once on any call to "craft" - foo: - bar: Prints bar
As you can see, the docstring for each @task function will then be represented in the help output, and docstrings can be omitted.
You can call individual tasks like:
and run multiple tasks with one call like:
craft foo bar
v0.2.6 - 10 Nov 2012
- Fix an issue with setup.py linking to the README
v0.2.3 - 14 Oct 2012
- Fix error catching isolation from craft and the actual task
v0.2.0 - 27 Aug 2012
- Added setup() and auto() tasks
- Added support for task dependencies via @depends
v0.1.0 - 26 Aug 2012
Source is available at: https://github.com/jdpaton/craft