From 6df4c86fc54c389057d6320055c81955114c98a1 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 8 Mar 2026 11:02:48 +0100 Subject: [PATCH] lib.App: Add property cmdline Add the property App.cmdline, containing the invoking command line as a string. Signed-off-by: Jan Lindemann --- src/python/jw/pkg/lib/App.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/python/jw/pkg/lib/App.py b/src/python/jw/pkg/lib/App.py index 9832bff2..329ec074 100644 --- a/src/python/jw/pkg/lib/App.py +++ b/src/python/jw/pkg/lib/App.py @@ -52,6 +52,7 @@ class App: # export from .Cmd import Cmd self.__args: Namespace|None = None + self.__cmdline: str|None = None self.__default_log_flags: str = os.getenv('JW_DEFAULT_LOG_FLAGS', default='stderr,position,prio,color') self.__default_log_level: str|int|None = os.getenv('JW_DEFAULT_LOG_LEVEL', default=NOTICE) self.__default_log_file: str|None = os.getenv('JW_DEFAULT_LOG_FILE', default=None) @@ -137,6 +138,14 @@ class App: # export async def _run(self, args: argparse.Namespace) -> None: return await self.args.func(args) + @property + def cmdline(self) -> str: + if self.__cmdline is None: + with open('/proc/self/cmdline', 'rb') as f: + raw = f.read().split(b'\0')[:-1] + self.__cmdline = ' '.join(shlex.quote(arg.decode()) for arg in raw) + return self.__cmdline + @property def args(self) -> argparse.Namespace: return self.__args