Just a quick announcement that I’ve managed to get Vellum nearly close
to what I need for building all my stuff. It has been refactored to be
funnier and also includes a simple “import” system that implements an idea
of recipes. The recipes are still rough, but do work by taking the
contents of another .yml (YAML) file and putting those contents into the
master with a namespace.
Vellum also has a fairly complete unit test suite that exercises most of
the system that I can test. Not sure if that’s how Python people do their
testing, but it seems to be working good for me.
If you’re interested in trying it out, grab the latest 0.4
release or grab it from the bzr
with:
bzr branch http://www.zedshaw.com/projects/vellum/
The funny refactoring I did was to break up the one large class into
three smaller classes:
- vellum.Press—Loads either YAML or Python build specs and does the
“coagulate” needed to resolve imports.
- vellum.Script—Responsible for taking the results of Press and
building the internal executable data structures for the script.
- vellum.Scribe—Runs a script you give it according to the options set.
Ok, that joke has been choked to death and probably won’t get any funnier,
even if it ever was all that funny to begin with.
Now, here’s what you can do with Vellum’s new recipe stuff:
- Put common tasks you have into other .yml (not .py yet) files.
- Put those common files into projects you start so you don’t have to
write them over and over again.
- Have your primary build.yml load them, and then the tasks and options in
the imported recipe file get put into a name space. This means if you
have distutils.yml with a target of “clean” then your build.yml will have
a target of “distutils:clean”.
- You can put these files in other directories too and the slash will
apply to the namespace name.
- Since the main file can be a .py you can have it generate a .yml that
gets loaded as part of the configuration process. This can be the start
of an autotools style config system (but one that doesn’t suck).
I’ll just be adding two tiny little things this next week and then I’m
gonna call Vellum 1.0 since it does most of what I need:
- A path mechanism so that these common recipes can live in some central
place and referenced easily. Then I’ll post up a bunch of recipes you can
grab and install for common stuff.
- Ability to have a recipe be a .py file so that they can get run like
.yml files during the resolution.
- Documentation and probably hosting the project on launchpad so people
can contribute.
The Vellum project page has more information and
a few more samples you can play with.