diff options
| author | KunoiSayami <[email protected]> | 2023-11-17 13:55:49 +0800 |
|---|---|---|
| committer | KunoiSayami <[email protected]> | 2023-11-17 13:55:49 +0800 |
| commit | 3eb6ed90365270c18e2a746ae0e849421c1805d1 (patch) | |
| tree | c9f3947af0849fea8c653d9d8c0eacfd13ff2775 /utils/trigger.py | |
| parent | b070b9d828933eeb6466b7e575bd882b303fda5d (diff) | |
refactor: Remove utils from repository
Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'utils/trigger.py')
| -rwxr-xr-x | utils/trigger.py | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/utils/trigger.py b/utils/trigger.py deleted file mode 100755 index ca0cfd1..0000000 --- a/utils/trigger.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python -import argparse -import logging -import os -import signal -import socket -import subprocess -import threading -from socketserver import StreamRequestHandler, TCPServer - -logger = logging.getLogger() -logger.setLevel(logging.DEBUG) - - -class Handler(StreamRequestHandler): - def handle(self): - while line := self.rfile.readline(): - if b"ARCH=" in line: - ( - subprocess.Popen( - [ - "systemctl", - "--no-block", - "start", - f"update-repo@{line.split(b'=')[1].decode().strip()}", - ] - ) - ).wait() - os.kill(os.getpid(), signal.SIGUSR1) - return - logger.info("Recv: %s", line) - - -# source: https://gist.github.com/drmalex07/333d8a88c4918954e8e4 -class Server(TCPServer): - # The constant would be better initialized by a systemd module - SYSTEMD_FIRST_SOCKET_FD = 3 - - def __init__(self, server_address, handler_cls): - # Invoke base but omit bind/listen steps (performed by systemd activation!) - TCPServer.__init__(self, server_address, handler_cls, bind_and_activate=False) - # Override socket - self.socket = socket.fromfd( - self.SYSTEMD_FIRST_SOCKET_FD, self.address_family, self.socket_type - ) - - -def main(): - def server_shutdown_wrapper(*_args) -> None: - logger.debug("Shutdown the server") - threading.Thread( - target=server.shutdown, - daemon=True, - ).start() - - server = Server(("localhost", 0), Handler) - signal.signal(signal.SIGUSR1, server_shutdown_wrapper) - - server.serve_forever() - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - - try: - import coloredlogs - - coloredlogs.install( - logging.DEBUG, - fmt="%(asctime)s - %(levelname)s - %(funcName)s - %(lineno)d - %(message)s", - ) - except ModuleNotFoundError: - logging.basicConfig( - level=logging.DEBUG, - format="%(asctime)s - %(levelname)s - %(funcName)s - %(lineno)d - %(message)s", - ) - - main() |
