diff --git a/hyperglass/configuration/__init__.py b/hyperglass/configuration/__init__.py index 886726a..8ee7825 100644 --- a/hyperglass/configuration/__init__.py +++ b/hyperglass/configuration/__init__.py @@ -5,7 +5,13 @@ from hyperglass.state import use_state from hyperglass.defaults.directives import init_builtin_directives # Local -from .validate import init_params, init_devices, init_ui_params, init_directives +from .validate import ( + init_files, + init_params, + init_devices, + init_ui_params, + init_directives, +) __all__ = ("init_user_config",) @@ -13,6 +19,7 @@ __all__ = ("init_user_config",) def init_user_config() -> None: """Initialize all user configurations and add them to global state.""" state = use_state() + init_files() params = init_params() builtins = init_builtin_directives() diff --git a/hyperglass/configuration/validate.py b/hyperglass/configuration/validate.py index 5379283..0f40568 100644 --- a/hyperglass/configuration/validate.py +++ b/hyperglass/configuration/validate.py @@ -1,6 +1,5 @@ """Import configuration files and run validation.""" - # Third Party from pydantic import ValidationError @@ -18,13 +17,23 @@ from .load import load_config from .markdown import get_markdown __all__ = ( - "init_params", - "init_directives", "init_devices", + "init_directives", + "init_files", + "init_params", "init_ui_params", ) +def init_files() -> None: + """Check if required directories exist and if not, create them.""" + for directory in ("plugins", "static/images"): + path = Settings.app_path / directory + if not path.exists(): + path.mkdir(parents=True) + log.debug("Created directory {!s}", path) + + def init_params() -> "Params": """Validate & initialize configuration parameters.""" user_config = load_config("config", required=False)