provide pre- and post- hooks with parsed command line arguments.
python hooks are passed two new keyword arguments:
- opts: a dict of options; unsepcified options are set to their default
- pats: a list of arguments
shell hooks receive two new variables containing string representations
of the above data:
- $HG_OPTS
- $HG_PATS
for example, the opts and pats for 'hg -f v1.1' would be:
{'force': True, 'message': '', 'rev': '', 'user': '', 'date': '', 'local': None, 'remove': None, 'mq': None}
['v1.1']
#!/bin/sh
cat > engine.py << EOF
from mercurial import templater
class mytemplater(object):
def __init__(self, loader, filters, defaults):
self.loader = loader
def process(self, t, map):
tmpl = self.loader(t)
for k, v in map.iteritems():
if k in ('templ', 'ctx', 'repo', 'revcache', 'cache'):
continue
if hasattr(v, '__call__'):
v = v(**map)
v = templater.stringify(v)
tmpl = tmpl.replace('{{%s}}' % k, v)
yield tmpl
templater.engines['my'] = mytemplater
EOF
hg init test
echo '[extensions]' > test/.hg/hgrc
echo "engine = `pwd`/engine.py" >> test/.hg/hgrc
cd test
cat > mymap << EOF
changeset = my:changeset.txt
EOF
cat > changeset.txt << EOF
{{rev}} {{node}} {{author}}
EOF
hg ci -Ama
hg log --style=./mymap