mirror of
ssh://git.janware.com/janware/proj/jw-pkg
synced 2026-04-24 17:23:36 +02:00
src.python.jw.pkg.App: Add property distro_id
Add @property App.distro_id, returning the ID field of /etc/os-release. It is supposed to be the most specific part of the OS cascade. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
bdb6ae69b3
commit
26e739ca0d
2 changed files with 15 additions and 6 deletions
|
|
@ -210,6 +210,7 @@ class App(Base):
|
|||
# -- Members without default values
|
||||
self.__opt_os: str|None = None
|
||||
self.__top_name: str|None = None
|
||||
self.__distro_id: str|None = None
|
||||
self.__os_cascade: list[str]|None = None
|
||||
self.__res_cache = ResultCache()
|
||||
self.__topdir: str|None = None
|
||||
|
|
@ -251,6 +252,17 @@ class App(Base):
|
|||
def projs_root(self):
|
||||
return self.__projs_root
|
||||
|
||||
@property
|
||||
def distro_id(self):
|
||||
if self.__distro_id is None:
|
||||
os_release = '/etc/os-release'
|
||||
with open(os_release, 'r') as file:
|
||||
m = re.search(r'^\s*ID\s*=\s*("?)([^"\n]+)\1\s*$', file.read(), re.MULTILINE)
|
||||
if m is None:
|
||||
raise Exception(f'Could not read "ID=" from "{os_release}"')
|
||||
self.__distro_id = m.group(2)
|
||||
return self.__distro_id
|
||||
|
||||
def find_dir(self, name: str, search_subdirs: list[str]=[], search_absdirs: list[str]=[], pretty: bool=True):
|
||||
return self.__find_dir(name, search_subdirs, search_absdirs, pretty)
|
||||
|
||||
|
|
|
|||
|
|
@ -18,14 +18,11 @@ class CmdDistro(CmdBase): # export
|
|||
def distro_id(self):
|
||||
if self.__id is None:
|
||||
if self.app.args.id is not None:
|
||||
# The distribution ID requested by the command line
|
||||
self.__id = self.app.args.id
|
||||
else:
|
||||
os_release = '/etc/os-release'
|
||||
with open(os_release, 'r') as file:
|
||||
m = re.search(r'^\s*ID\s*=\s*("?)([^"\n]+)\1\s*$', file.read(), re.MULTILINE)
|
||||
if m is None:
|
||||
raise Exception(f'Could not read "ID=" from "{os_release}"')
|
||||
self.__id = m.group(2)
|
||||
# The ID of the distribution we run on
|
||||
self.__id = self.app.distro_id
|
||||
return self.__id
|
||||
|
||||
def add_arguments(self, p: ArgumentParser) -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue