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 <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-02-15 11:17:16 +00:00
commit 2d08c2a12d

View file

@ -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