From be8e35cbcf02ec5c9e046fa68a381f349b682722 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Wed, 1 Jun 2022 17:11:45 +0200 Subject: [PATCH] output more descriptive output when dependencies fail --- owrx/__main__.py | 11 ++++++++--- owrx/feature.py | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/owrx/__main__.py b/owrx/__main__.py index 499c3b1..d25079c 100644 --- a/owrx/__main__.py +++ b/owrx/__main__.py @@ -89,12 +89,17 @@ Support and info: https://groups.io/g/openwebrx coreConfig = CoreConfig() featureDetector = FeatureDetector() - if not featureDetector.is_available("core"): + failed = featureDetector.get_failed_requirements("core") + if failed: logger.error( "you are missing required dependencies to run openwebrx. " - "please check that the following core requirements are installed and up to date:" + "please check that the following core requirements are installed and up to date: %s", + ", ".join(failed) ) - logger.error(", ".join(featureDetector.get_requirements("core"))) + for f in failed: + description = featureDetector.get_requirement_description(f) + if description: + logger.error("description for %s:\n%s", f, description) return # Get error messages about unknown / unavailable features as soon as possible diff --git a/owrx/feature.py b/owrx/feature.py index f3cbf0a..35377b9 100644 --- a/owrx/feature.py +++ b/owrx/feature.py @@ -110,6 +110,9 @@ class FeatureDetector(object): def is_available(self, feature): return self.has_requirements(self.get_requirements(feature)) + def get_failed_requirements(self, feature): + return [req for req in self.get_requirements(feature) if not self.has_requirement(req)] + def get_requirements(self, feature): try: return FeatureDetector.features[feature]