summaryrefslogtreecommitdiff
path: root/kvmd
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2021-04-17 17:44:48 +0300
committerDevaev Maxim <[email protected]>2021-04-17 17:44:48 +0300
commit19c4c7d1e3f11e1682c72336df06426d9b7608a5 (patch)
tree14fad7f5b75714152e8ce7f07ae0654c0a83ebb5 /kvmd
parent5dea266895f2dac364e81e83e5ef635d1b8c1466 (diff)
clean yaml error message
Diffstat (limited to 'kvmd')
-rw-r--r--kvmd/apps/__init__.py9
-rw-r--r--kvmd/yamlconf/loader.py6
2 files changed, 10 insertions, 5 deletions
diff --git a/kvmd/apps/__init__.py b/kvmd/apps/__init__.py
index cb5666b9..c807858f 100644
--- a/kvmd/apps/__init__.py
+++ b/kvmd/apps/__init__.py
@@ -161,9 +161,12 @@ def init(
# =====
def _init_config(config_path: str, override_options: List[str], **load_flags: bool) -> Section:
config_path = os.path.expanduser(config_path)
- raw_config: Dict = load_yaml_file(config_path)
+ try:
+ raw_config: Dict = load_yaml_file(config_path)
+ except Exception as err:
+ raise SystemExit(f"ConfigError: Can't read config file {config_path!r}:\n{tools.efmt(err)}")
if not isinstance(raw_config, dict):
- raise SystemExit(f"Config error: Top-level of the file {config_path!r} must be a dictionary")
+ raise SystemExit(f"ConfigError: Top-level of the file {config_path!r} must be a dictionary")
scheme = _get_config_scheme()
try:
@@ -177,7 +180,7 @@ def _init_config(config_path: str, override_options: List[str], **load_flags: bo
return config
except (ConfigError, UnknownPluginError) as err:
- raise SystemExit(f"Config error: {err}")
+ raise SystemExit(f"ConfigError: {err}")
def _patch_raw(raw_config: Dict) -> None:
diff --git a/kvmd/yamlconf/loader.py b/kvmd/yamlconf/loader.py
index 20ff7c93..2acff93f 100644
--- a/kvmd/yamlconf/loader.py
+++ b/kvmd/yamlconf/loader.py
@@ -28,15 +28,17 @@ from typing import Any
import yaml
import yaml.nodes
+from .. import tools
+
# =====
def load_yaml_file(path: str) -> Any:
with open(path) as yaml_file:
try:
return yaml.load(yaml_file, _YamlLoader)
- except Exception:
+ except Exception as err:
# Reraise internal exception as standard ValueError and show the incorrect file
- raise ValueError(f"Incorrect YAML syntax in file {path!r}")
+ raise ValueError(f"Invalid YAML in the file {path!r}:\n{tools.efmt(err)}") from None
class _YamlLoader(yaml.SafeLoader):