annotate mercurial/exthelper.py @ 51691:3cb2b5b6626f

hghave: update detection of black version to a newer minimum The CI has moved to version 23.3.0, which is the last one to support 3.7 at runtime.
author Raphaël Gomès <rgomes@octobus.net>
date Thu, 18 Jul 2024 12:37:13 +0200
parents d9e22b39041a
children f4733654f144
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
1 # Copyright 2012 Logilab SA <contact@logilab.fr>
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
2 # Pierre-Yves David <pierre-yves.david@ens-lyon.org>
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
3 # Octobus <contact@octobus.net>
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
4 #
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
5 # This software may be used and distributed according to the terms of the
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
6 # GNU General Public License version 2 or any later version.
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
7
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
8 #####################################################################
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
9 ### Extension helper ###
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
10 #####################################################################
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
11
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
12
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
13 from . import (
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
14 commands,
41060
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
15 error,
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
16 extensions,
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
17 registrar,
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
18 )
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
19
42316
c07dcf7a0247 exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents: 41279
diff changeset
20 from hgdemandimport import tracing
c07dcf7a0247 exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents: 41279
diff changeset
21
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42316
diff changeset
22
48946
642e31cb55f0 py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48913
diff changeset
23 class exthelper:
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
24 """Helper for modular extension setup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
25
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
26 A single helper should be instantiated for each module of an
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
27 extension, where a command or function needs to be wrapped, or a
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
28 command, extension hook, fileset, revset or template needs to be
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
29 registered. Helper methods are then used as decorators for
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
30 these various purposes. If an extension spans multiple modules,
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
31 all helper instances should be merged in the main module.
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
32
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
33 All decorators return the original function and may be chained.
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
34
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
35 Aside from the helper functions with examples below, several
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
36 registrar method aliases are available for adding commands,
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
37 configitems, filesets, revsets, and templates. Simply decorate
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
38 the appropriate methods, and assign the corresponding exthelper
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
39 variable to a module level variable of the extension. The
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
40 extension loading mechanism will handle the rest.
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
41
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
42 example::
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
43
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
44 # ext.py
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
45 eh = exthelper.exthelper()
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
46
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
47 # As needed (failure to do this will mean your registration will not
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
48 # happen):
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
49 cmdtable = eh.cmdtable
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
50 configtable = eh.configtable
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
51 filesetpredicate = eh.filesetpredicate
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
52 revsetpredicate = eh.revsetpredicate
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
53 templatekeyword = eh.templatekeyword
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
54
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
55 # As needed (failure to do this will mean your eh.wrap*-decorated
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
56 # functions will not wrap, and/or your eh.*setup-decorated functions
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
57 # will not execute):
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
58 uisetup = eh.finaluisetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
59 extsetup = eh.finalextsetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
60 reposetup = eh.finalreposetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
61 uipopulate = eh.finaluipopulate
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
62
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
63 @eh.command(b'mynewcommand',
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
64 [(b'r', b'rev', [], _(b'operate on these revisions'))],
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
65 _(b'-r REV...'),
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
66 helpcategory=command.CATEGORY_XXX)
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
67 def newcommand(ui, repo, *revs, **opts):
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
68 # implementation goes here
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
69
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
70 eh.configitem(b'experimental', b'foo',
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
71 default=False,
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
72 )
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
73
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
74 @eh.filesetpredicate(b'lfs()')
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
75 def filesetbabar(mctx, x):
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
76 return mctx.predicate(...)
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
77
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
78 @eh.revsetpredicate(b'hidden')
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
79 def revsetbabar(repo, subset, x):
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
80 args = revset.getargs(x, 0, 0, b'babar accept no argument')
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
81 return [r for r in subset if b'babar' in repo[r].description()]
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
82
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
83 @eh.templatekeyword(b'babar')
41071
c81bb97b0cac exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents: 41070
diff changeset
84 def kwbabar(ctx):
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
85 return b'babar'
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
86 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
87
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
88 def __init__(self):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
89 self._uipopulatecallables = []
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
90 self._uicallables = []
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
91 self._extcallables = []
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
92 self._repocallables = []
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
93 self._commandwrappers = []
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
94 self._extcommandwrappers = []
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
95 self._functionwrappers = []
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
96 self.cmdtable = {}
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
97 self.command = registrar.command(self.cmdtable)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
98 self.configtable = {}
41045
c1476d095d57 exthelper: simplify configitem registration
Matt Harbison <matt_harbison@yahoo.com>
parents: 41044
diff changeset
99 self.configitem = registrar.configitem(self.configtable)
41070
8f40e21ca842 exthelper: reintroduce the ability to register filesets
Matt Harbison <matt_harbison@yahoo.com>
parents: 41069
diff changeset
100 self.filesetpredicate = registrar.filesetpredicate()
41066
0358cca1dccf exthelper: reintroduce the ability to register revsets
Matt Harbison <matt_harbison@yahoo.com>
parents: 41060
diff changeset
101 self.revsetpredicate = registrar.revsetpredicate()
41069
70ca0e846d25 exthelper: reintroduce the ability to register templates
Matt Harbison <matt_harbison@yahoo.com>
parents: 41066
diff changeset
102 self.templatekeyword = registrar.templatekeyword()
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
103
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
104 def merge(self, other):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
105 self._uicallables.extend(other._uicallables)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
106 self._uipopulatecallables.extend(other._uipopulatecallables)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
107 self._extcallables.extend(other._extcallables)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
108 self._repocallables.extend(other._repocallables)
41082
4d40f6bb4cef exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com>
parents: 41071
diff changeset
109 self.filesetpredicate._merge(other.filesetpredicate)
4d40f6bb4cef exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com>
parents: 41071
diff changeset
110 self.revsetpredicate._merge(other.revsetpredicate)
4d40f6bb4cef exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com>
parents: 41071
diff changeset
111 self.templatekeyword._merge(other.templatekeyword)
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
112 self._commandwrappers.extend(other._commandwrappers)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
113 self._extcommandwrappers.extend(other._extcommandwrappers)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
114 self._functionwrappers.extend(other._functionwrappers)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
115 self.cmdtable.update(other.cmdtable)
48913
f254fc73d956 global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
116 for section, items in other.configtable.items():
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
117 if section in self.configtable:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
118 self.configtable[section].update(items)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
119 else:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
120 self.configtable[section] = items
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
121
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
122 def finaluisetup(self, ui):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
123 """Method to be used as the extension uisetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
124
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
125 The following operations belong here:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
126
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
127 - Changes to ui.__class__ . The ui object that will be used to run the
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
128 command has not yet been created. Changes made here will affect ui
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
129 objects created after this, and in particular the ui that will be
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
130 passed to runcommand
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
131 - Command wraps (extensions.wrapcommand)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
132 - Changes that need to be visible to other extensions: because
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
133 initialization occurs in phases (all extensions run uisetup, then all
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
134 run extsetup), a change made here will be visible to other extensions
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
135 during extsetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
136 - Monkeypatch or wrap function (extensions.wrapfunction) of dispatch
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
137 module members
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
138 - Setup of pre-* and post-* hooks
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
139 - pushkey setup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
140 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
141 for command, wrapper, opts in self._commandwrappers:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
142 entry = extensions.wrapcommand(commands.table, command, wrapper)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
143 if opts:
41060
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
144 for opt in opts:
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
145 entry[1].append(opt)
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
146 for cont, funcname, wrapper in self._functionwrappers:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
147 extensions.wrapfunction(cont, funcname, wrapper)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
148 for c in self._uicallables:
43238
101ae8bbfa02 cleanup: hgdemandimport.tracing accepts strings, not bytes
Augie Fackler <augie@google.com>
parents: 43106
diff changeset
149 with tracing.log('finaluisetup: %s', repr(c)):
42316
c07dcf7a0247 exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents: 41279
diff changeset
150 c(ui)
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
151
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
152 def finaluipopulate(self, ui):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
153 """Method to be used as the extension uipopulate
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
154
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
155 This is called once per ui instance to:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
156
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
157 - Set up additional ui members
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
158 - Update configuration by ``ui.setconfig()``
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
159 - Extend the class dynamically
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
160 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
161 for c in self._uipopulatecallables:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
162 c(ui)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
163
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
164 def finalextsetup(self, ui):
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
165 """Method to be used as the extension extsetup
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
166
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
167 The following operations belong here:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
168
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
169 - Changes depending on the status of other extensions. (if
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
170 extensions.find(b'mq'))
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
171 - Add a global option to all commands
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
172 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
173 knownexts = {}
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
174
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
175 for ext, command, wrapper, opts in self._extcommandwrappers:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
176 if ext not in knownexts:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
177 try:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
178 e = extensions.find(ext)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
179 except KeyError:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
180 # Extension isn't enabled, so don't bother trying to wrap
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
181 # it.
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
182 continue
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
183 knownexts[ext] = e.cmdtable
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
184 entry = extensions.wrapcommand(knownexts[ext], command, wrapper)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
185 if opts:
41060
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
186 for opt in opts:
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
187 entry[1].append(opt)
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
188
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
189 for c in self._extcallables:
43238
101ae8bbfa02 cleanup: hgdemandimport.tracing accepts strings, not bytes
Augie Fackler <augie@google.com>
parents: 43106
diff changeset
190 with tracing.log('finalextsetup: %s', repr(c)):
42316
c07dcf7a0247 exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents: 41279
diff changeset
191 c(ui)
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
192
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
193 def finalreposetup(self, ui, repo):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
194 """Method to be used as the extension reposetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
195
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
196 The following operations belong here:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
197
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
198 - All hooks but pre-* and post-*
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
199 - Modify configuration variables
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
200 - Changes to repo.__class__, repo.dirstate.__class__
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
201 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
202 for c in self._repocallables:
43238
101ae8bbfa02 cleanup: hgdemandimport.tracing accepts strings, not bytes
Augie Fackler <augie@google.com>
parents: 43106
diff changeset
203 with tracing.log('finalreposetup: %s', repr(c)):
42316
c07dcf7a0247 exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents: 41279
diff changeset
204 c(ui, repo)
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
205
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
206 def uisetup(self, call):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
207 """Decorated function will be executed during uisetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
208
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
209 example::
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
210
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
211 # Required, otherwise your uisetup function(s) will not execute.
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
212 uisetup = eh.finaluisetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
213
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
214 @eh.uisetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
215 def setupbabar(ui):
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
216 print('this is uisetup!')
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
217 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
218 self._uicallables.append(call)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
219 return call
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
220
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
221 def uipopulate(self, call):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
222 """Decorated function will be executed during uipopulate
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
223
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
224 example::
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
225
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
226 # Required, otherwise your uipopulate function(s) will not execute.
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
227 uipopulate = eh.finaluipopulate
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
228
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
229 @eh.uipopulate
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
230 def setupfoo(ui):
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
231 print('this is uipopulate!')
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
232 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
233 self._uipopulatecallables.append(call)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
234 return call
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
235
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
236 def extsetup(self, call):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
237 """Decorated function will be executed during extsetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
238
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
239 example::
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
240
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
241 # Required, otherwise your extsetup function(s) will not execute.
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
242 extsetup = eh.finalextsetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
243
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
244 @eh.extsetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
245 def setupcelestine(ui):
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
246 print('this is extsetup!')
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
247 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
248 self._extcallables.append(call)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
249 return call
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
250
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
251 def reposetup(self, call):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
252 """Decorated function will be executed during reposetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
253
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
254 example::
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
255
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
256 # Required, otherwise your reposetup function(s) will not execute.
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
257 reposetup = eh.finalreposetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
258
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
259 @eh.reposetup
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
260 def setupzephir(ui, repo):
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
261 print('this is reposetup!')
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
262 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
263 self._repocallables.append(call)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
264 return call
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
265
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
266 def wrapcommand(self, command, extension=None, opts=None):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
267 """Decorated function is a command wrapper
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
268
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
269 The name of the command must be given as the decorator argument.
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
270 The wrapping is installed during `uisetup`.
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
271
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
272 If the second option `extension` argument is provided, the wrapping
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
273 will be applied in the extension commandtable. This argument must be a
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
274 string that will be searched using `extension.find` if not found and
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
275 Abort error is raised. If the wrapping applies to an extension, it is
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
276 installed during `extsetup`.
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
277
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
278 example::
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
279
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
280 # Required if `extension` is not provided
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
281 uisetup = eh.finaluisetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
282 # Required if `extension` is provided
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
283 extsetup = eh.finalextsetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
284
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
285 @eh.wrapcommand(b'summary')
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
286 def wrapsummary(orig, ui, repo, *args, **kwargs):
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
287 ui.note(b'Barry!')
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
288 return orig(ui, repo, *args, **kwargs)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
289
41060
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
290 The `opts` argument allows specifying a list of tuples for additional
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
291 arguments for the command. See ``mercurial.fancyopts.fancyopts()`` for
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
292 the format of the tuple.
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
293
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
294 """
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
295 if opts is None:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
296 opts = []
41060
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
297 else:
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
298 for opt in opts:
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
299 if not isinstance(opt, tuple):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
300 raise error.ProgrammingError(b'opts must be list of tuples')
41060
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
301 if len(opt) not in (4, 5):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
302 msg = b'each opt tuple must contain 4 or 5 values'
41060
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
303 raise error.ProgrammingError(msg)
7250cbaabde0 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents: 41057
diff changeset
304
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
305 def dec(wrapper):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
306 if extension is None:
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
307 self._commandwrappers.append((command, wrapper, opts))
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
308 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42316
diff changeset
309 self._extcommandwrappers.append(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42316
diff changeset
310 (extension, command, wrapper, opts)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42316
diff changeset
311 )
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
312 return wrapper
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42316
diff changeset
313
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
314 return dec
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
315
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
316 def wrapfunction(self, container, funcname):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
317 """Decorated function is a function wrapper
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
318
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
319 This function takes two arguments, the container and the name of the
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
320 function to wrap. The wrapping is performed during `uisetup`.
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
321 (there is no extension support)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
322
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
323 example::
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
324
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
325 # Required, otherwise the function will not be wrapped
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
326 uisetup = eh.finaluisetup
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
327
50798
d9e22b39041a wrapfunction: use sysstr instead of bytes as argument in "exthelper"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48946
diff changeset
328 @eh.wrapfunction(discovery, 'checkheads')
46871
887f89b100ac exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents: 45932
diff changeset
329 def wrapcheckheads(orig, *args, **kwargs):
45932
bd22900e26ac exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents: 43238
diff changeset
330 ui.note(b'His head smashed in and his heart cut out')
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
331 return orig(*args, **kwargs)
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
332 """
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42316
diff changeset
333
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
334 def dec(wrapper):
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
335 self._functionwrappers.append((container, funcname, wrapper))
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
336 return wrapper
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42316
diff changeset
337
41044
fe606f2dcae9 extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
338 return dec