From e3c375f8d7d449ede2848e13209e0ee4dd075fb4 Mon Sep 17 00:00:00 2001 From: "Jose M. Guisado" Date: Wed, 16 Aug 2023 13:56:14 +0200 Subject: 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. --- src/utils/probe.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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. -- cgit v1.2.3-18-g5258