pushkey.py
37 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
/ mercurial / pushkey.py
|
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. | ||||
|
r17075 | import bookmarks, phases, obsolete | ||
|
r13353 | |||
|
r11367 | def _nslist(repo): | ||
n = {} | ||||
for k in _namespaces: | ||||
n[k] = "" | ||||
return n | ||||
|
r13353 | _namespaces = {"namespaces": (lambda *x: False, _nslist), | ||
|
r15648 | "bookmarks": (bookmarks.pushbookmark, bookmarks.listbookmarks), | ||
"phases": (phases.pushphase, phases.listphases), | ||||
|
r17075 | "obsolete": (obsolete.pushmarker, obsolete.listmarkers), | ||
|
r15648 | } | ||
|
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) | ||||