diff options
author | Jose M. Guisado <jguisado@soleta.eu> | 2023-08-16 13:56:14 +0200 |
---|---|---|
committer | Alejandro Sirgo Rica <asirgo@soleta.eu> | 2024-03-04 11:33:10 +0100 |
commit | e3c375f8d7d449ede2848e13209e0ee4dd075fb4 (patch) | |
tree | 974a9bfc21da07403b76cdd7b7434f37f1869eb2 | |
parent | bb3264d8f4ec8e3dd2f5c3ab206393517a70cc19 (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. |