From the start, creating a new weboob module was a pain, as you had a lot of repetitive copy-paste-alter tasks to do.
Since I can’t stand anything repetitive, I created a tool to speed up module creation, which was inspired from the now retired tools/gen_comic_reader.sh
.
Now, when I see code generation, I usually think something must be wrong. In our case, what we are really doing is filling automatically some fields like author, class name, etc. A lot of web frameworks also do that kind of base code generation with success.
It’s a very simple tool, which provides “recipes”, those recipes being a set of templates. Though you can override them, it tries to guess as much details as possible, like your name and e-mail.
Here is an example session:
$ ./tools/boilerplate.py usage: boilerplate.py [-h] [-a AUTHOR] [-e EMAIL] {base,comic,comic.test} ... boilerplate.py: error: too few arguments $ ./tools/boilerplate.py base "foo bar" Created modules/foobar/__init__.py Created modules/foobar/backend.py Created modules/foobar/browser.py Created modules/foobar/pages.py |
The backend.py
should look like:
# -*- coding: utf-8 -*- # Copyright(C) 2013 Laurent Bachelier # # [...] from weboob.tools.backend import BaseBackend from .browser import FooBarBrowser __all__ = ['FooBarBackend'] class FooBarBackend(BaseBackend): NAME = 'foobar' DESCRIPTION = u'foobar website' MAINTAINER = u'Laurent Bachelier' EMAIL = 'laurent@bachelier.name' VERSION = '0.f' BROWSER = FooBarBrowser |
You can jump into the code right now!
As of now, there is only a minimal “base” recipe and the two “comic” recipes taken from the previous tool; however as boilerplate.py
is intended to be highly extensible and maintainable, I hope it will support more specialized recipes soon (for example, “newspaper” or “pastebin”). You know what to do.