aboutsummaryrefslogtreecommitdiff
path: root/modules/config.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-10-04 10:25:48 +0100
committerGravatar jesopo2019-10-04 10:25:48 +0100
commit3466a3c43e50cf6fc55636352b82eab3f407c7f3 (patch)
tree581634fbe538e4e0772f7eaacb0be01811ea559d /modules/config.py
parentcheck that `third_words` isn't empty (diff)
signature
Allow utils.Setting_ parse functions to throw detailed errors
Diffstat (limited to 'modules/config.py')
-rw-r--r--modules/config.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/modules/config.py b/modules/config.py
index 97638a93..5b76f376 100644
--- a/modules/config.py
+++ b/modules/config.py
@@ -7,7 +7,8 @@ import enum
from src import ModuleManager, utils
class ConfigInvalidValue(Exception):
- pass
+ def __init__(self, message: str=None):
+ self.message = message
class ConfigSettingInexistent(Exception):
pass
@@ -113,7 +114,11 @@ class Module(ModuleManager.BaseModule):
def _config(self, export_settings, target, setting, value=None):
if not value == None:
- validated_value = export_settings[setting].parse(value)
+ try:
+ validated_value = export_settings[setting].parse(value)
+ except utils.SettingParseException as e:
+ raise ConfigInvalidValue(str(e))
+
if not validated_value == None:
target.set_setting(setting, validated_value)
return ConfigResult(ConfigResults.Changed, validated_value)
@@ -199,7 +204,10 @@ class Module(ModuleManager.BaseModule):
try:
result = self._config(export_settings, target, setting, value)
- except ConfigInvalidValue:
+ except ConfigInvalidValue as e:
+ if not e.message == None:
+ raise utils.EventError("Invalid value: %s" % e.message)
+
example = export_settings[setting].get_example()
if not example == None:
raise utils.EventError("Invalid value. %s" %