From 72db591576e9087a8d087749d5fae1a78a1e3339 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 1 Feb 2021 09:46:48 +0100 Subject: [PATCH] Validate build env before using it (#2492) --- supervisor/addons/build.py | 8 ++++++++ supervisor/docker/addon.py | 3 +++ 2 files changed, 11 insertions(+) diff --git a/supervisor/addons/build.py b/supervisor/addons/build.py index d0c2ff86b..648bedaec 100644 --- a/supervisor/addons/build.py +++ b/supervisor/addons/build.py @@ -48,6 +48,14 @@ class AddonBuild(JsonConfig, CoreSysAttributes): """Return additional Docker build arguments.""" return self._data[ATTR_ARGS] + @property + def is_valid(self) -> bool: + """Return true if the build env is valid.""" + return all( + self.addon.path_location.is_dir(), + Path(self.addon.path_location, "Dockerfile").is_file(), + ) + def get_docker_args(self, version: AwesomeVersion): """Create a dict with Docker build arguments.""" args = { diff --git a/supervisor/docker/addon.py b/supervisor/docker/addon.py index ee9e63e47..713254f5f 100644 --- a/supervisor/docker/addon.py +++ b/supervisor/docker/addon.py @@ -423,6 +423,9 @@ class DockerAddon(DockerInterface): Need run inside executor. """ build_env = AddonBuild(self.coresys, self.addon) + if not build_env.is_valid: + _LOGGER.error("Invalid build envoirement, can't build this add-on!") + raise DockerError() _LOGGER.info("Starting build for %s:%s", self.image, version) try: