revset: use getargsdict for sort()
authorMartijn Pieters <mjpieters@fb.com>
Mon, 23 May 2016 14:09:50 -0700
changeset 29238 e150c1d5f262
parent 29237 ee935a6e1ea2
child 29239 ecf296652080
revset: use getargsdict for sort() This makes it possible to use keyword arguments to specify per-sort options. For example, a hypothetical 'first' option for the user sort could sort certain users first with: sort(all(), user, user.first=mpm@selenic.com)
mercurial/revset.py
--- a/mercurial/revset.py	Wed May 25 15:32:35 2016 -0500
+++ b/mercurial/revset.py	Mon May 23 14:09:50 2016 -0700
@@ -1847,14 +1847,16 @@
     - ``user`` for user name (``author`` can be used as an alias),
     - ``date`` for the commit date
     """
-    # i18n: "sort" is a keyword
-    l = getargs(x, 1, 2, _("sort requires one or two arguments"))
+    args = getargsdict(x, 'sort', 'set keys')
+    if 'set' not in args:
+        # i18n: "sort" is a keyword
+        raise error.ParseError(_('sort requires one or two arguments'))
     keys = "rev"
-    if len(l) == 2:
+    if 'keys' in args:
         # i18n: "sort" is a keyword
-        keys = getstring(l[1], _("sort spec must be a string"))
-
-    s = l[0]
+        keys = getstring(args['keys'], _("sort spec must be a string"))
+
+    s = args['set']
     keys = keys.split()
     revs = getset(repo, subset, s)
     if keys == ["rev"]: