11367
|
1 # pushkey.py - dispatching for pushing and pulling keys |
|
2 # |
|
3 # Copyright 2010 Matt Mackall <mpm@selenic.com> |
|
4 # |
|
5 # This software may be used and distributed according to the terms of the |
|
6 # GNU General Public License version 2 or any later version. |
|
7 |
|
8 def _nslist(repo): |
|
9 n = {} |
|
10 for k in _namespaces: |
|
11 n[k] = "" |
|
12 return n |
|
13 |
|
14 _namespaces = {"namespaces": (lambda *x: False, _nslist)} |
|
15 |
|
16 def register(namespace, pushkey, listkeys): |
|
17 _namespaces[namespace] = (pushkey, listkeys) |
|
18 |
|
19 def _get(namespace): |
|
20 return _namespaces.get(namespace, (lambda *x: False, lambda *x: {})) |
|
21 |
|
22 def push(repo, namespace, key, old, new): |
|
23 '''should succeed iff value was old''' |
|
24 pk = _get(namespace)[0] |
|
25 return pk(repo, key, old, new) |
|
26 |
|
27 def list(repo, namespace): |
|
28 '''return a dict''' |
|
29 lk = _get(namespace)[1] |
|
30 return lk(repo) |
|
31 |