annotate allpaths.py @ 11:e702b63eea3f

Making it obvious that we scan paths section
author Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
date Sun, 08 Nov 2015 09:01:49 +0100
parents dac7580bfff2
children bed42905e871
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 # allpaths.py - execute commands on multiple paths
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 #
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 # This software may be used and distributed according to the terms of
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 # the GNU General Public License version 2 or any later version.
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 '''execute commands on multiple paths'''
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 import mercurial.util
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
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
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 from mercurial.i18n import _
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
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
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
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
11
e702b63eea3f Making it obvious that we scan paths section
Marcin Kasperski <Marcin.Kasperski@mekk.waw.pl>
parents: 9
diff changeset
19 group = opts.pop('group', None) or 'paths'
6
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
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 # Get the paths to push to.
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 paths = ui.configitems(group)
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 if not paths:
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 raise mercurial.util.Abort(_('No paths defined in section %s') % group)
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 # Push!
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 for path in paths:
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
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
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
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
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
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
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
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
6f92e4c814d1 Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
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 }