diff options
author | Jose M. Guisado <jguisado@soleta.eu> | 2023-08-16 13:56:14 +0200 |
---|---|---|
committer | Jose M. Guisado <jguisado@soleta.eu> | 2023-09-13 11:19:12 +0200 |
commit | a49988a22229e08eca600bf8ef06d04a9e7afa41 (patch) | |
tree | 222e11c7f65da3148822504d11bd761ea76321aa | |
parent | 8296ba9a518b0ce50002061c5f4746e081cea3fe (diff) |
probe: add basic os family detection
Add a basic OS family enumeration: OSFamily.
Add utility function that probes for an installed Linux or Windows
system, returns the corresponding enum value, OSFamily.UNKNOWN
otherwise.
-rw-r--r-- | src/utils/probe.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/utils/probe.py b/src/utils/probe.py index 796bf55..8c77bf9 100644 --- a/src/utils/probe.py +++ b/src/utils/probe.py @@ -10,10 +10,13 @@ import os import subprocess import platform +from enum import Enum from subprocess import PIPE from src.utils.fs import find_mountpoint +OSFamily = Enum('OSFamily', ['LINUX', 'WINDOWS', 'UNKNOWN']) + def getlinuxversion(osrelease): """ Parses a os-release file to fetch 'PRETTY_NAME' key. @@ -115,6 +118,19 @@ def cache_probe(): stdout = proc_blkid.stdout.decode().strip() return stdout + +def get_os_family(mountpoint): + winreghives = f'{mountpoint}/Windows/System32/' + osrelease = f'{mountpoint}/etc/os-release' + + if os.path.exists(osrelease): + return OSFamily.LINUX + elif os.path.exists(winreghives): + return OSFamily.WINDOWS + else: + return OSFamily.UNKNOWN + + def os_probe(mountpoint): """ Probes mountpoint for typical OS dependant files. |