Skip to content

Commit 8f938eb

Browse files
committed
Return exit codes
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
1 parent a5eefc2 commit 8f938eb

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

bpython/curtsies.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from bpython.importcompletion import find_iterator
2020
from bpython.curtsiesfrontend import events as bpythonevents
2121
from bpython import inspection
22+
from bpython.repl import extract_exit_value
2223

2324
logger = logging.getLogger(__name__)
2425

@@ -55,7 +56,7 @@ def main(args=None, locals_=None, banner=None):
5556
if exec_args:
5657
if not options:
5758
raise ValueError("don't pass in exec_args without options")
58-
exit_value = 0
59+
exit_value = ()
5960
if options.paste:
6061
paste = curtsies.events.PasteEvent()
6162
encoding = inspection.get_encoding_file(exec_args[0])
@@ -69,14 +70,18 @@ def main(args=None, locals_=None, banner=None):
6970
except SystemExit as e:
7071
exit_value = e.args
7172
if not options.interactive:
72-
raise SystemExit(exit_value)
73+
return extract_exit_value(exit_value)
7374
else:
7475
# expected for interactive sessions (vanilla python does it)
7576
sys.path.insert(0, '')
7677

7778
print(bpargs.version_banner())
78-
mainloop(config, locals_, banner, interp, paste,
79-
interactive=(not exec_args))
79+
try:
80+
exit_value = mainloop(config, locals_, banner, interp, paste,
81+
interactive=(not exec_args))
82+
except (SystemExitFromCodeGreenlet, SystemExit) as e:
83+
exit_value = e.args
84+
return extract_exit_value(exit_value)
8085

8186

8287
def mainloop(config, locals_, banner, interp=None, paste=None,

0 commit comments

Comments
 (0)