mirror of
ssh://git.janware.com/janware/proj/jw-pkg
synced 2026-04-25 09:35:54 +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
|
# -- Members without default values
|
||||||
self.__opt_os: str|None = None
|
self.__opt_os: str|None = None
|
||||||
self.__top_name: str|None = None
|
self.__top_name: str|None = None
|
||||||
|
self.__distro_id: str|None = None
|
||||||
self.__os_cascade: list[str]|None = None
|
self.__os_cascade: list[str]|None = None
|
||||||
self.__res_cache = ResultCache()
|
self.__res_cache = ResultCache()
|
||||||
self.__topdir: str|None = None
|
self.__topdir: str|None = None
|
||||||
|
|
@ -251,6 +252,17 @@ class App(Base):
|
||||||
def projs_root(self):
|
def projs_root(self):
|
||||||
return self.__projs_root
|
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):
|
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)
|
return self.__find_dir(name, search_subdirs, search_absdirs, pretty)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,14 +18,11 @@ class CmdDistro(CmdBase): # export
|
||||||
def distro_id(self):
|
def distro_id(self):
|
||||||
if self.__id is None:
|
if self.__id is None:
|
||||||
if self.app.args.id is not None:
|
if self.app.args.id is not None:
|
||||||
|
# The distribution ID requested by the command line
|
||||||
self.__id = self.app.args.id
|
self.__id = self.app.args.id
|
||||||
else:
|
else:
|
||||||
os_release = '/etc/os-release'
|
# The ID of the distribution we run on
|
||||||
with open(os_release, 'r') as file:
|
self.__id = self.app.distro_id
|
||||||
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)
|
|
||||||
return self.__id
|
return self.__id
|
||||||
|
|
||||||
def add_arguments(self, p: ArgumentParser) -> None:
|
def add_arguments(self, p: ArgumentParser) -> None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue