pushkey: add pushkey core
authorMatt Mackall <mpm@selenic.com>
Wed, 16 Jun 2010 16:04:44 -0500
changeset 11367 ca4fc993087c
parent 11366 1765897fc497
child 11368 b9eb005c54ad
pushkey: add pushkey core
mercurial/pushkey.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/pushkey.py	Wed Jun 16 16:04:44 2010 -0500
@@ -0,0 +1,31 @@
+# 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.
+
+def _nslist(repo):
+    n = {}
+    for k in _namespaces:
+        n[k] = ""
+    return n
+
+_namespaces = {"namespaces": (lambda *x: False, _nslist)}
+
+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)
+