From 2d08c2a12dee7b841ad42ec95aaf58bb5c0e216f Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 15 Feb 2026 11:17:16 +0000 Subject: [PATCH] jw.pkg.App.os_cascade: Add more fields Add more fields to the OS cascade returned by App.os_cascade, based on the ID field in /etc/os-release. This includes some new ones, prefixed by pkg-, revealing which package format is used. Signed-off-by: Jan Lindemann --- src/python/jw/pkg/App.py | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/python/jw/pkg/App.py b/src/python/jw/pkg/App.py index 6023b48f..e188d805 100644 --- a/src/python/jw/pkg/App.py +++ b/src/python/jw/pkg/App.py @@ -294,9 +294,35 @@ class App(Base): return self.find_dir(name, ["/tmpl"], ["/opt/" + name + "/share/tmpl"]) def os_cascade(self) -> list[str]: + def __append(entry: str): + if not entry in ret: + ret.append(entry) import platform if self.__os_cascade is None: ret = [ 'os', platform.system().lower() ] + match self.distro_id: + case 'centos': + __append('pkg-rpm') + __append('pm-yum') + __append('redhat') + __append('rhel') + case 'fedora' | 'rhel': + __append('pkg-rpm') + __append('pm-yum') + __append('redhat') + case 'suse': + __append('pkg-rpm') + __append('pm-zypper') + case 'kali' | 'raspbian': + __append('pkg-debian') + __append('pm-apt') + __append('debian') + case 'ubuntu': + __append('pkg-debian') + __append('pm-apt') + case 'archlinux': + __append('pkg-pm') + __append('pm-pacman') os = self.__opt_os if self.__opt_os is not None else self.get_os() name = re.sub(r'-.*', '', os) series = os @@ -307,12 +333,10 @@ class App(Base): break ret.append(n) series = n - if not name in ret: - ret.append(name) - if not os in ret: - ret.append(os) + __append(name) + __append(os) + __append(self.distro_id) # e.g. os, linux, suse, suse-tumbleweed - #return [ 'os', platform.system().lower(), name, os ] self.__os_cascade = ret return self.__os_cascade