There are times where you may want to extend or modify the way that
giftwrap builds packages. Short of submitting a pull request or
(worse) forking the repository, there was no easy way to do so.
This change introduces builder drivers with stevedore. By merely adding
entry points in the 'giftwrap.builder.drivers', additional
implementations are now possible.
The previous way that settings at both the global and project scope
were being handled was pretty bad. This change seeks to make settings
a bit more sane. Now we will pass in what we found in the manifest
as the args to the specific settings constructor. Those that can be
exposed directly will be, and those that cannot will be wrapped in
@property decorators.
In addition, moving the jinja templating from the manifest level to
the individual project level. The reason is that it is not sufficient
to just use templating globally - we need things like base_path's to
be project context aware.
This is just a 'nice' feature to have. As we start building out more
extensive logging, it will help to be able to look at the logs in a
more human-parseable manner.