##// END OF EJS Templates
bundle2: introduce a `parthandler` decorator...
Pierre-Yves David -
r20890:ec7fc110 default
parent child Browse files
Show More
@@ -148,8 +148,23 b' def _makefpartparamsizes(nbparams):'
148 """
148 """
149 return '>'+('BB'*nbparams)
149 return '>'+('BB'*nbparams)
150
150
151 parthandlermapping = {}
151
152
152 parthandlermapping = {}
153 def parthandler(parttype):
154 """decorator that register a function as a bundle2 part handler
155
156 eg::
157
158 @parthandler('myparttype')
159 def myparttypehandler(...):
160 '''process a part of type "my part".'''
161 ...
162 """
163 def _decorator(func):
164 assert parttype not in parthandlermapping
165 parthandlermapping[parttype] = func
166 return func
167 return _decorator
153
168
154 def processbundle(repo, stream):
169 def processbundle(repo, stream):
155 """This function process a bundle, apply effect to/from a repo
170 """This function process a bundle, apply effect to/from a repo
@@ -20,14 +20,13 b' Create an extension to test bundle2 API'
20 > Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko."""
20 > Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko."""
21 > assert len(ELEPHANTSSONG) == 178 # future test say 178 bytes, trust it.
21 > assert len(ELEPHANTSSONG) == 178 # future test say 178 bytes, trust it.
22 >
22 >
23 > @bundle2.parthandler('test:song')
23 > def songhandler(repo, part):
24 > def songhandler(repo, part):
24 > """handle a "test:song" bundle2 part, printing the lyrics on stdin"""
25 > """handle a "test:song" bundle2 part, printing the lyrics on stdin"""
25 > repo.ui.write('The choir start singing:\n')
26 > repo.ui.write('The choir start singing:\n')
26 > for line in part.data.split('\n'):
27 > for line in part.data.split('\n'):
27 > repo.ui.write(' %s\n' % line)
28 > repo.ui.write(' %s\n' % line)
28 >
29 >
29 > bundle2.parthandlermapping['test:song'] = songhandler
30 >
31 > @command('bundle2',
30 > @command('bundle2',
32 > [('', 'param', [], 'stream level parameter'),
31 > [('', 'param', [], 'stream level parameter'),
33 > ('', 'parts', False, 'include some arbitrary parts to the bundle'),],
32 > ('', 'parts', False, 'include some arbitrary parts to the bundle'),],
General Comments 0
You need to be logged in to leave comments. Login now