Mercurial > hg-allpaths
annotate allpaths.py @ 9:dac7580bfff2
Added incomingall and outgoingall
| author | Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl> |
|---|---|
| date | Sun, 08 Nov 2015 08:52:52 +0100 |
| parents | eced61373a74 |
| children | e702b63eea3f |
| rev | line source |
|---|---|
| 0 | 1 # allpaths.py - execute commands on multiple paths |
| 2 # | |
| 3 # This software may be used and distributed according to the terms of | |
| 4 # the GNU General Public License version 2 or any later version. | |
| 5 | |
| 6 '''execute commands on multiple paths''' | |
| 7 | |
| 8 import mercurial.util | |
| 9 import mercurial.commands | |
|
7
1ea915867337
Standard push options are imported from mercurial, not copied here.
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
6
diff
changeset
|
10 import mercurial.cmdutil |
| 0 | 11 from mercurial.i18n import _ |
| 12 | |
|
6
b1d440f1027a
(internal) Changed the way in which extension options are separated:
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
1
diff
changeset
|
13 #pylint:disable=invalid-name,broad-except,line-too-long |
| 0 | 14 |
|
8
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
15 |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
16 def _iter_over_paths(command, ui, repo, **opts): |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
17 """execute given command on multiple paths""" |
|
6
b1d440f1027a
(internal) Changed the way in which extension options are separated:
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
1
diff
changeset
|
18 # Extract our options and filter them out |
|
b1d440f1027a
(internal) Changed the way in which extension options are separated:
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
1
diff
changeset
|
19 group = opts.pop('group', None) |
|
b1d440f1027a
(internal) Changed the way in which extension options are separated:
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
1
diff
changeset
|
20 ignore_errors = opts.pop('ignore_errors', None) |
| 0 | 21 |
| 22 # Get the paths to push to. | |
| 23 paths = ui.configitems(group) | |
| 24 if not paths: | |
| 25 raise mercurial.util.Abort(_('No paths defined in section %s') % group) | |
| 26 | |
| 27 # Push! | |
| 28 for path in paths: | |
| 29 try: | |
|
8
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
30 command(ui, repo, path[1], **opts) |
| 0 | 31 except Exception as e: |
|
6
b1d440f1027a
(internal) Changed the way in which extension options are separated:
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
1
diff
changeset
|
32 if not ignore_errors: |
| 0 | 33 raise |
|
8
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
34 ui.warn(_('error handling %s: %s') % (path[1], e)) |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
35 |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
36 |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
37 def pushall(ui, repo, **opts): |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
38 """execute pull on multiple paths""" |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
39 _iter_over_paths(mercurial.commands.push, ui, repo, **opts) |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
40 |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
41 |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
42 def pullall(ui, repo, **opts): |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
43 """execute push on multiple paths""" |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
44 _iter_over_paths(mercurial.commands.pull, ui, repo, **opts) |
| 0 | 45 |
| 46 | |
|
9
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
47 def incomingall(ui, repo, **opts): |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
48 """execute incoming on multiple paths""" |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
49 _iter_over_paths(mercurial.commands.incoming, ui, repo, **opts) |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
50 |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
51 |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
52 def outgoingall(ui, repo, **opts): |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
53 """execute outgoing on multiple paths""" |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
54 _iter_over_paths(mercurial.commands.outgoing, ui, repo, **opts) |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
55 |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
56 |
|
7
1ea915867337
Standard push options are imported from mercurial, not copied here.
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
6
diff
changeset
|
57 def _original_options(cmdname): |
|
1ea915867337
Standard push options are imported from mercurial, not copied here.
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
6
diff
changeset
|
58 """Gets list of given command options as specified in Mercurial core""" |
|
1ea915867337
Standard push options are imported from mercurial, not copied here.
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
6
diff
changeset
|
59 _, spec = mercurial.cmdutil.findcmd(cmdname, mercurial.commands.table) |
|
1ea915867337
Standard push options are imported from mercurial, not copied here.
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
6
diff
changeset
|
60 return spec[1] |
|
1ea915867337
Standard push options are imported from mercurial, not copied here.
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
6
diff
changeset
|
61 |
|
1ea915867337
Standard push options are imported from mercurial, not copied here.
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
6
diff
changeset
|
62 |
|
9
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
63 EXT_OPTS = [ |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
64 ('g', 'group', 'paths', _('use a named group of paths')), |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
65 ('', 'ignore-errors', None, _('continue execution despite errors')), |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
66 ] |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
67 |
| 0 | 68 cmdtable = { |
|
6
b1d440f1027a
(internal) Changed the way in which extension options are separated:
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
1
diff
changeset
|
69 "pushall": ( |
|
b1d440f1027a
(internal) Changed the way in which extension options are separated:
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
1
diff
changeset
|
70 pushall, |
|
9
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
71 EXT_OPTS + _original_options('push'), |
|
7
1ea915867337
Standard push options are imported from mercurial, not copied here.
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
6
diff
changeset
|
72 _('[-g GROUP] [--ignore-errors] <push options>')), |
|
8
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
73 "pullall": ( |
|
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
74 pullall, |
|
9
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
75 EXT_OPTS + _original_options('pull'), |
|
8
eced61373a74
Added pullall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
7
diff
changeset
|
76 _('[-g GROUP] [--ignore-errors] <pull options>')), |
|
9
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
77 "incomingall": ( |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
78 incomingall, |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
79 EXT_OPTS + _original_options('incoming'), |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
80 _('[-g GROUP] [--ignore-errors] <incoming options>')), |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
81 "outgoingall": ( |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
82 outgoingall, |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
83 EXT_OPTS + _original_options('outgoing'), |
|
dac7580bfff2
Added incomingall and outgoingall
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
8
diff
changeset
|
84 _('[-g GROUP] [--ignore-errors] <outgoing options>')), |
|
6
b1d440f1027a
(internal) Changed the way in which extension options are separated:
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents:
1
diff
changeset
|
85 } |
