refactor(utils): add more util functions

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
dw-0
2023-12-03 23:09:43 +01:00
parent e35e44a76a
commit 57f34b07c6

View File

@@ -14,6 +14,7 @@ import shutil
import subprocess import subprocess
import sys import sys
import time import time
import socket
from pathlib import Path from pathlib import Path
from typing import List from typing import List
@@ -213,3 +214,33 @@ def mask_system_service(service_name: str) -> None:
log = f"Unable to mask system service {service_name}: {e.stderr.decode()}" log = f"Unable to mask system service {service_name}: {e.stderr.decode()}"
Logger.print_error(log) Logger.print_error(log)
raise raise
def check_file_exists(file_path: Path) -> bool:
"""
Helper function for checking the existence of a file where
elevated permissions are required |
:param file_path: the absolute path of the file to check
:return: True if file exists, otherwise False
"""
try:
command = ["sudo", "find", file_path]
subprocess.check_output(command, stderr=subprocess.DEVNULL)
return True
except subprocess.CalledProcessError:
return False
# this feels hacky and not quite right, but for now it works
# see: https://stackoverflow.com/questions/166506/finding-local-ip-addresses-using-pythons-stdlib
def get_ipv4_addr() -> str:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(0)
try:
# doesn't even have to be reachable
s.connect(("192.255.255.255", 1))
return s.getsockname()[0]
except Exception:
return "127.0.0.1"
finally:
s.close()