503 list, the client can continue with this server after completing all |
503 list, the client can continue with this server after completing all |
504 the instructions. |
504 the instructions. |
505 """ |
505 """ |
506 args = self._readlist() |
506 args = self._readlist() |
507 errorraised = False |
507 errorraised = False |
|
508 detailed_exit_code = 255 |
508 try: |
509 try: |
509 self.ui, lui = _loadnewui(self.ui, args, self.cdebug) |
510 self.ui, lui = _loadnewui(self.ui, args, self.cdebug) |
510 except error.RepoError as inst: |
511 except error.RepoError as inst: |
511 # RepoError can be raised while trying to read shared source |
512 # RepoError can be raised while trying to read shared source |
512 # configuration |
513 # configuration |
513 self.ui.error(_(b"abort: %s\n") % stringutil.forcebytestr(inst)) |
514 self.ui.error(_(b"abort: %s\n") % stringutil.forcebytestr(inst)) |
514 if inst.hint: |
515 if inst.hint: |
515 self.ui.error(_(b"(%s)\n") % inst.hint) |
516 self.ui.error(_(b"(%s)\n") % inst.hint) |
516 errorraised = True |
517 errorraised = True |
517 except error.Abort as inst: |
518 except error.Abort as inst: |
|
519 if isinstance(inst, error.InputError): |
|
520 detailed_exit_code = 10 |
518 self.ui.error(inst.format()) |
521 self.ui.error(inst.format()) |
519 errorraised = True |
522 errorraised = True |
520 |
523 |
521 if errorraised: |
524 if errorraised: |
522 self.ui.flush() |
525 self.ui.flush() |
523 self.cresult.write(b'exit 255') |
526 exit_code = 255 |
|
527 if self.ui.configbool(b'ui', b'detailed-exit-code'): |
|
528 exit_code = detailed_exit_code |
|
529 self.cresult.write(b'exit %d' % exit_code) |
524 return |
530 return |
525 newhash = hashstate.fromui(lui, self.hashstate.mtimepaths) |
531 newhash = hashstate.fromui(lui, self.hashstate.mtimepaths) |
526 insts = [] |
532 insts = [] |
527 if newhash.mtimehash != self.hashstate.mtimehash: |
533 if newhash.mtimehash != self.hashstate.mtimehash: |
528 addr = _hashaddress(self.baseaddress, self.hashstate.confighash) |
534 addr = _hashaddress(self.baseaddress, self.hashstate.confighash) |