summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJose M. Guisado <jguisado@soleta.eu>2023-08-16 13:56:14 +0200
committerAlejandro Sirgo Rica <asirgo@soleta.eu>2024-03-04 11:33:10 +0100
commite3c375f8d7d449ede2848e13209e0ee4dd075fb4 (patch)
tree974a9bfc21da07403b76cdd7b7434f37f1869eb2
parentbb3264d8f4ec8e3dd2f5c3ab206393517a70cc19 (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.py16
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.