summaryrefslogtreecommitdiffstats
path: root/subcmds/forall.py
diff options
context:
space:
mode:
Diffstat (limited to 'subcmds/forall.py')
-rw-r--r--subcmds/forall.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/subcmds/forall.py b/subcmds/forall.py
index 49e725c2..4c1c9ff8 100644
--- a/subcmds/forall.py
+++ b/subcmds/forall.py
@@ -93,6 +93,9 @@ following <command>.
93 93
94Unless -p is used, stdin, stdout, stderr are inherited from the 94Unless -p is used, stdin, stdout, stderr are inherited from the
95terminal and are not redirected. 95terminal and are not redirected.
96
97If -e is used, when a command exits unsuccessfully, '%prog' will abort
98without iterating through the remaining projects.
96""" 99"""
97 100
98 def _Options(self, p): 101 def _Options(self, p):
@@ -105,6 +108,9 @@ terminal and are not redirected.
105 dest='command', 108 dest='command',
106 action='callback', 109 action='callback',
107 callback=cmd) 110 callback=cmd)
111 p.add_option('-e', '--abort-on-errors',
112 dest='abort_on_errors', action='store_true',
113 help='Abort if a command exits unsuccessfully')
108 114
109 g = p.add_option_group('Output') 115 g = p.add_option_group('Output')
110 g.add_option('-p', 116 g.add_option('-p',
@@ -255,7 +261,12 @@ terminal and are not redirected.
255 s.dest.flush() 261 s.dest.flush()
256 262
257 r = p.wait() 263 r = p.wait()
258 if r != 0 and r != rc: 264 if r != 0:
259 rc = r 265 if r != rc:
266 rc = r
267 if opt.abort_on_errors:
268 print("error: %s: Aborting due to previous error" % project.relpath,
269 file=sys.stderr)
270 sys.exit(r)
260 if rc != 0: 271 if rc != 0:
261 sys.exit(rc) 272 sys.exit(rc)