[signals] update FLAGS handling

This commit is contained in:
Mike Fährmann
2025-07-11 21:01:24 +02:00
parent 2d3b6155eb
commit d8a370da0b
3 changed files with 22 additions and 9 deletions

View File

@@ -91,16 +91,22 @@ def main():
if signals := config.get((), "signals-actions"):
import signal
def signals_handler(event, action):
def handler(signal_num, frame):
signal_name = signal.Signals(signal_num).name
output.stderr_write(f"{signal_name} received\n")
util.FLAGS.__dict__[event] = action
return handler
for signal_name, action in signals.items():
signal_num = getattr(signal, signal_name, None)
if signal_num is None:
log.warning("signal '%s' is not defined", signal_name)
else:
def handler(signal_num, frame):
signal_name = signal.Signals(signal_num).name
output.stderr_write(f"{signal_name} received\n")
util.FLAGS.__dict__[action.upper()] = "stop"
signal.signal(signal_num, handler)
event, _, action = action.rpartition(":")
signal.signal(signal_num, signals_handler(
event.upper() if event else "FILE", action.lower()))
# enable ANSI escape sequences on Windows
if util.WINDOWS and config.get(("output",), "ansi", output.COLORS):