Mercurial > hg
annotate mercurial/exthelper.py @ 42594:d013099c551b
copies: filter invalid copies only at end of pathcopies() (issue6163)
copies._filter() filters out copies whose source file does not exist
in the start commit or whose target file does not exist in the end
commit. We do that after chaining copies with dirstate copies or
backward renames from another branch. We also do at the end of the
changeset-centric copy tracing. The filtering means that we will
remove copies to/from files that did not exist in some intermediate
commit. That is inconsistent with what we do if a file has been
deleted and then re-added (we allow updating across that).
Copying the two first examples from issue6163:
@ 4 'rename x to y'
|
o 3 'add x again'
|
o 2 'remove x'
|
| o 1 'modify x'
|/
o 0 'add x'
@ 4 'rename x to y'
|
o 3 'add x again'
|
| o 2 'modify x'
| |
| o 1 'add x'
|/
o 0 'base'
When doing `hg rebase -r 1 -d 4` in the first case, it succeeds, but
`hg rebase -r 2 -d 4` in the second case does not. That's because we
chain and filter via commit 0, which does not have file 'x' in the
second case. IMO, that's clearly inconsistent. So this patch removes
the filtering step so it only happens at the end. If a file was
temporarily removed, whether via a merge base or not, it will now
still be considered the same file. That fixes issue6163 for the
changeset-centric case.
Differential Revision: https://phab.mercurial-scm.org/D6603
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 25 Jun 2019 14:25:03 -0700 |
parents | c07dcf7a0247 |
children | 2372284d9457 |
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 from __future__ import absolute_import |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
13 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
14 from . import ( |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
15 commands, |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
16 error, |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
17 extensions, |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
18 pycompat, |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
19 registrar, |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
20 ) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
21 |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
22 from hgdemandimport import tracing |
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
23 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
24 class exthelper(object): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
25 """Helper for modular extension setup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
26 |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
27 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
|
28 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
|
29 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
|
30 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
|
31 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
|
32 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
|
33 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
34 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
|
35 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
36 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
|
37 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
|
38 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
|
39 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
|
40 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
|
41 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
|
42 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
43 example:: |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
44 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
45 # ext.py |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
46 eh = exthelper.exthelper() |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
47 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
48 # As needed: |
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 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
55 @eh.command('mynewcommand', |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
56 [('r', 'rev', [], _('operate on these revisions'))], |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
57 _('-r REV...'), |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
58 helpcategory=command.CATEGORY_XXX) |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
59 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
|
60 # implementation goes here |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
61 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
62 eh.configitem('experimental', 'foo', |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
63 default=False, |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
64 ) |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
65 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
66 @eh.filesetpredicate('lfs()') |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
67 def filesetbabar(mctx, x): |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
68 return mctx.predicate(...) |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
69 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
70 @eh.revsetpredicate('hidden') |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
71 def revsetbabar(repo, subset, x): |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
72 args = revset.getargs(x, 0, 0, 'babar accept no argument') |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
73 return [r for r in subset if 'babar' in repo[r].description()] |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
74 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
75 @eh.templatekeyword('babar') |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
76 def kwbabar(ctx): |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
77 return 'babar' |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
78 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
79 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
80 def __init__(self): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
81 self._uipopulatecallables = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
82 self._uicallables = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
83 self._extcallables = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
84 self._repocallables = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
85 self._commandwrappers = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
86 self._extcommandwrappers = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
87 self._functionwrappers = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
88 self.cmdtable = {} |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
89 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
|
90 self.configtable = {} |
41045
c1476d095d57
exthelper: simplify configitem registration
Matt Harbison <matt_harbison@yahoo.com>
parents:
41044
diff
changeset
|
91 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
|
92 self.filesetpredicate = registrar.filesetpredicate() |
41066
0358cca1dccf
exthelper: reintroduce the ability to register revsets
Matt Harbison <matt_harbison@yahoo.com>
parents:
41060
diff
changeset
|
93 self.revsetpredicate = registrar.revsetpredicate() |
41069
70ca0e846d25
exthelper: reintroduce the ability to register templates
Matt Harbison <matt_harbison@yahoo.com>
parents:
41066
diff
changeset
|
94 self.templatekeyword = registrar.templatekeyword() |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
95 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
96 def merge(self, other): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
97 self._uicallables.extend(other._uicallables) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
98 self._uipopulatecallables.extend(other._uipopulatecallables) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
99 self._extcallables.extend(other._extcallables) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
100 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
|
101 self.filesetpredicate._merge(other.filesetpredicate) |
4d40f6bb4cef
exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com>
parents:
41071
diff
changeset
|
102 self.revsetpredicate._merge(other.revsetpredicate) |
4d40f6bb4cef
exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com>
parents:
41071
diff
changeset
|
103 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
|
104 self._commandwrappers.extend(other._commandwrappers) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
105 self._extcommandwrappers.extend(other._extcommandwrappers) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
106 self._functionwrappers.extend(other._functionwrappers) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
107 self.cmdtable.update(other.cmdtable) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
108 for section, items in other.configtable.iteritems(): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
109 if section in self.configtable: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
110 self.configtable[section].update(items) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
111 else: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
112 self.configtable[section] = items |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
113 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
114 def finaluisetup(self, ui): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
115 """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
|
116 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
117 The following operations belong here: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
118 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
119 - 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
|
120 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
|
121 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
|
122 passed to runcommand |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
123 - Command wraps (extensions.wrapcommand) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
124 - 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
|
125 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
|
126 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
|
127 during extsetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
128 - 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
|
129 module members |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
130 - 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
|
131 - pushkey setup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
132 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
133 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
|
134 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
|
135 if opts: |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
136 for opt in opts: |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
137 entry[1].append(opt) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
138 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
|
139 extensions.wrapfunction(cont, funcname, wrapper) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
140 for c in self._uicallables: |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
141 with tracing.log(b'finaluisetup: %s', pycompat.sysbytes(repr(c))): |
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
142 c(ui) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
143 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
144 def finaluipopulate(self, ui): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
145 """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
|
146 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
147 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
|
148 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
149 - Set up additional ui members |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
150 - Update configuration by ``ui.setconfig()`` |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
151 - Extend the class dynamically |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
152 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
153 for c in self._uipopulatecallables: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
154 c(ui) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
155 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
156 def finalextsetup(self, ui): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
157 """Method to be used as a the extension extsetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
158 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
159 The following operations belong here: |
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 - Changes depending on the status of other extensions. (if |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
162 extensions.find('mq')) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
163 - 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
|
164 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
165 knownexts = {} |
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 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
|
168 if ext not in knownexts: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
169 try: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
170 e = extensions.find(ext) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
171 except KeyError: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
172 # 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
|
173 # it. |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
174 continue |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
175 knownexts[ext] = e.cmdtable |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
176 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
|
177 if opts: |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
178 for opt in opts: |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
179 entry[1].append(opt) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
180 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
181 for c in self._extcallables: |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
182 with tracing.log(b'finalextsetup: %s', pycompat.sysbytes(repr(c))): |
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
183 c(ui) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
184 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
185 def finalreposetup(self, ui, repo): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
186 """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
|
187 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
188 The following operations belong here: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
189 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
190 - 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
|
191 - Modify configuration variables |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
192 - 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
|
193 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
194 for c in self._repocallables: |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
195 with tracing.log(b'finalreposetup: %s', pycompat.sysbytes(repr(c))): |
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
196 c(ui, repo) |
41044
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 def uisetup(self, call): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
199 """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
|
200 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
201 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
202 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
203 @eh.uisetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
204 def setupbabar(ui): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
205 print 'this is uisetup!' |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
206 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
207 self._uicallables.append(call) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
208 return call |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
209 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
210 def uipopulate(self, call): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
211 """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
|
212 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
213 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
214 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
215 @eh.uipopulate |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
216 def setupfoo(ui): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
217 print 'this is uipopulate!' |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
218 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
219 self._uipopulatecallables.append(call) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
220 return call |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
221 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
222 def extsetup(self, call): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
223 """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
|
224 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
225 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
226 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
227 @eh.extsetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
228 def setupcelestine(ui): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
229 print 'this is extsetup!' |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
230 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
231 self._extcallables.append(call) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
232 return call |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
233 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
234 def reposetup(self, call): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
235 """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
|
236 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
237 example:: |
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 @eh.reposetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
240 def setupzephir(ui, repo): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
241 print 'this is reposetup!' |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
242 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
243 self._repocallables.append(call) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
244 return call |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
245 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
246 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
|
247 """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
|
248 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
249 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
|
250 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
|
251 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
252 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
|
253 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
|
254 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
|
255 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
|
256 installed during `extsetup`. |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
257 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
258 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
259 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
260 @eh.wrapcommand('summary') |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
261 def wrapsummary(orig, ui, repo, *args, **kwargs): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
262 ui.note('Barry!') |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
263 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
|
264 |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
265 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
|
266 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
|
267 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
|
268 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
269 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
270 if opts is None: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
271 opts = [] |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
272 else: |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
273 for opt in opts: |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
274 if not isinstance(opt, tuple): |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
275 raise error.ProgrammingError('opts must be list of tuples') |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
276 if len(opt) not in (4, 5): |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
277 msg = 'each opt tuple must contain 4 or 5 values' |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
278 raise error.ProgrammingError(msg) |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
279 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
280 def dec(wrapper): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
281 if extension is None: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
282 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
|
283 else: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
284 self._extcommandwrappers.append((extension, command, wrapper, |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
285 opts)) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
286 return wrapper |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
287 return dec |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
288 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
289 def wrapfunction(self, container, funcname): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
290 """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
|
291 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
292 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
|
293 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
|
294 (there is no extension support) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
295 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
296 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
297 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
298 @eh.function(discovery, 'checkheads') |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
299 def wrapfunction(orig, *args, **kwargs): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
300 ui.note('His head smashed in and his heart cut out') |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
301 return orig(*args, **kwargs) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
302 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
303 def dec(wrapper): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
304 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
|
305 return wrapper |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
306 return dec |