pushkey.py
34 lines
| 926 B
| text/x-python
|
PythonLexer
/ mercurial / pushkey.py
Matt Mackall
|
r11367 | # pushkey.py - dispatching for pushing and pulling keys | ||
# | ||||
# Copyright 2010 Matt Mackall <mpm@selenic.com> | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
Matt Mackall
|
r13353 | import bookmarks | ||
Matt Mackall
|
r11367 | def _nslist(repo): | ||
n = {} | ||||
for k in _namespaces: | ||||
n[k] = "" | ||||
return n | ||||
Matt Mackall
|
r13353 | _namespaces = {"namespaces": (lambda *x: False, _nslist), | ||
"bookmarks": (bookmarks.pushbookmark, bookmarks.listbookmarks)} | ||||
Matt Mackall
|
r11367 | |||
def register(namespace, pushkey, listkeys): | ||||
_namespaces[namespace] = (pushkey, listkeys) | ||||
def _get(namespace): | ||||
return _namespaces.get(namespace, (lambda *x: False, lambda *x: {})) | ||||
def push(repo, namespace, key, old, new): | ||||
'''should succeed iff value was old''' | ||||
pk = _get(namespace)[0] | ||||
return pk(repo, key, old, new) | ||||
def list(repo, namespace): | ||||
'''return a dict''' | ||||
lk = _get(namespace)[1] | ||||
return lk(repo) | ||||