diff options
-rwxr-xr-x | main.py | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -73,6 +73,7 @@ class _Repo(object): | |||
73 | all_commands['branch'] = all_commands['branches'] | 73 | all_commands['branch'] = all_commands['branches'] |
74 | 74 | ||
75 | def _Run(self, argv): | 75 | def _Run(self, argv): |
76 | result = 0 | ||
76 | name = None | 77 | name = None |
77 | glob = [] | 78 | glob = [] |
78 | 79 | ||
@@ -96,7 +97,7 @@ class _Repo(object): | |||
96 | name = 'version' | 97 | name = 'version' |
97 | else: | 98 | else: |
98 | print >>sys.stderr, 'fatal: invalid usage of --version' | 99 | print >>sys.stderr, 'fatal: invalid usage of --version' |
99 | sys.exit(1) | 100 | return 1 |
100 | 101 | ||
101 | try: | 102 | try: |
102 | cmd = self.commands[name] | 103 | cmd = self.commands[name] |
@@ -104,7 +105,7 @@ class _Repo(object): | |||
104 | print >>sys.stderr,\ | 105 | print >>sys.stderr,\ |
105 | "repo: '%s' is not a repo command. See 'repo help'."\ | 106 | "repo: '%s' is not a repo command. See 'repo help'."\ |
106 | % name | 107 | % name |
107 | sys.exit(1) | 108 | return 1 |
108 | 109 | ||
109 | cmd.repodir = self.repodir | 110 | cmd.repodir = self.repodir |
110 | cmd.manifest = XmlManifest(cmd.repodir) | 111 | cmd.manifest = XmlManifest(cmd.repodir) |
@@ -114,7 +115,7 @@ class _Repo(object): | |||
114 | print >>sys.stderr, \ | 115 | print >>sys.stderr, \ |
115 | "fatal: '%s' requires a working directory"\ | 116 | "fatal: '%s' requires a working directory"\ |
116 | % name | 117 | % name |
117 | sys.exit(1) | 118 | return 1 |
118 | 119 | ||
119 | copts, cargs = cmd.OptionParser.parse_args(argv) | 120 | copts, cargs = cmd.OptionParser.parse_args(argv) |
120 | 121 | ||
@@ -132,7 +133,7 @@ class _Repo(object): | |||
132 | try: | 133 | try: |
133 | start = time.time() | 134 | start = time.time() |
134 | try: | 135 | try: |
135 | cmd.Execute(copts, cargs) | 136 | result = cmd.Execute(copts, cargs) |
136 | finally: | 137 | finally: |
137 | elapsed = time.time() - start | 138 | elapsed = time.time() - start |
138 | hours, remainder = divmod(elapsed, 3600) | 139 | hours, remainder = divmod(elapsed, 3600) |
@@ -146,16 +147,18 @@ class _Repo(object): | |||
146 | % (hours, minutes, seconds) | 147 | % (hours, minutes, seconds) |
147 | except DownloadError, e: | 148 | except DownloadError, e: |
148 | print >>sys.stderr, 'error: %s' % str(e) | 149 | print >>sys.stderr, 'error: %s' % str(e) |
149 | sys.exit(1) | 150 | return 1 |
150 | except ManifestInvalidRevisionError, e: | 151 | except ManifestInvalidRevisionError, e: |
151 | print >>sys.stderr, 'error: %s' % str(e) | 152 | print >>sys.stderr, 'error: %s' % str(e) |
152 | sys.exit(1) | 153 | return 1 |
153 | except NoSuchProjectError, e: | 154 | except NoSuchProjectError, e: |
154 | if e.name: | 155 | if e.name: |
155 | print >>sys.stderr, 'error: project %s not found' % e.name | 156 | print >>sys.stderr, 'error: project %s not found' % e.name |
156 | else: | 157 | else: |
157 | print >>sys.stderr, 'error: no project in current directory' | 158 | print >>sys.stderr, 'error: no project in current directory' |
158 | sys.exit(1) | 159 | return 1 |
160 | |||
161 | return result | ||
159 | 162 | ||
160 | def _MyRepoPath(): | 163 | def _MyRepoPath(): |
161 | return os.path.dirname(__file__) | 164 | return os.path.dirname(__file__) |
@@ -316,6 +319,8 @@ def init_http(): | |||
316 | urllib2.install_opener(urllib2.build_opener(*handlers)) | 319 | urllib2.install_opener(urllib2.build_opener(*handlers)) |
317 | 320 | ||
318 | def _Main(argv): | 321 | def _Main(argv): |
322 | result = 0 | ||
323 | |||
319 | opt = optparse.OptionParser(usage="repo wrapperinfo -- ...") | 324 | opt = optparse.OptionParser(usage="repo wrapperinfo -- ...") |
320 | opt.add_option("--repo-dir", dest="repodir", | 325 | opt.add_option("--repo-dir", dest="repodir", |
321 | help="path to .repo/") | 326 | help="path to .repo/") |
@@ -334,11 +339,11 @@ def _Main(argv): | |||
334 | try: | 339 | try: |
335 | init_ssh() | 340 | init_ssh() |
336 | init_http() | 341 | init_http() |
337 | repo._Run(argv) | 342 | result = repo._Run(argv) or 0 |
338 | finally: | 343 | finally: |
339 | close_ssh() | 344 | close_ssh() |
340 | except KeyboardInterrupt: | 345 | except KeyboardInterrupt: |
341 | sys.exit(1) | 346 | result = 1 |
342 | except RepoChangedException, rce: | 347 | except RepoChangedException, rce: |
343 | # If repo changed, re-exec ourselves. | 348 | # If repo changed, re-exec ourselves. |
344 | # | 349 | # |
@@ -349,7 +354,9 @@ def _Main(argv): | |||
349 | except OSError, e: | 354 | except OSError, e: |
350 | print >>sys.stderr, 'fatal: cannot restart repo after upgrade' | 355 | print >>sys.stderr, 'fatal: cannot restart repo after upgrade' |
351 | print >>sys.stderr, 'fatal: %s' % e | 356 | print >>sys.stderr, 'fatal: %s' % e |
352 | sys.exit(128) | 357 | result = 128 |
358 | |||
359 | sys.exit(result) | ||
353 | 360 | ||
354 | if __name__ == '__main__': | 361 | if __name__ == '__main__': |
355 | _Main(sys.argv[1:]) | 362 | _Main(sys.argv[1:]) |