From c28574362145d808e4f882473f4b9b0c445a8f00 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 18 Jan 2022 22:16:23 +0100 Subject: [PATCH] Validate operating system is supported (#64352) Co-authored-by: Paulus Schoutsen Co-authored-by: Franck Nijhof --- homeassistant/__main__.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index 75b67852047..cfe93a8fa1a 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -12,6 +12,13 @@ from .const import REQUIRED_PYTHON_VER, RESTART_EXIT_CODE, __version__ FAULT_LOG_FILENAME = "home-assistant.log.fault" +def validate_os() -> None: + """Validate that Home Assistant is running in a supported operating system.""" + if not sys.platform.startswith(("darwin", "linux")): + print("Home Assistant only supports Linux, OSX and Windows using WSL") + sys.exit(1) + + def validate_python() -> None: """Validate that the right Python version is running.""" if sys.version_info[:3] < REQUIRED_PYTHON_VER: @@ -108,6 +115,11 @@ def get_arguments() -> argparse.Namespace: parser.add_argument( "--script", nargs=argparse.REMAINDER, help="Run one of the embedded scripts" ) + parser.add_argument( + "--ignore-os-check", + action="store_true", + help="Skips validation of operating system", + ) arguments = parser.parse_args() @@ -146,6 +158,9 @@ def main() -> int: args = get_arguments() + if not args.ignore_os_check: + validate_os() + if args.script is not None: # pylint: disable=import-outside-toplevel from . import scripts