Source code for statick_tool.resources

"""Manages plugin and file lookup chaining.

Handles chaining user directories and the default statick resource directory.
"""

import logging
import os
from typing import List, Optional


[docs]class Resources: """Manages plugin and file lookup chaining. Handles chaining user directories and the default statick resource directory. """ def __init__(self, paths: List[str]) -> None: """Initialize resource handling.""" self.paths: List[str] = [] for path in paths: if os.path.exists(path) and os.path.isdir(path): self.paths.append(os.path.abspath(path)) logging.debug("Adding %s to resources path", path) elif os.path.exists(path) and not os.path.isdir(path): logging.error("%s is not a directory and not used as a path", path) else: logging.error("Could not find path %s", path) default_path = os.path.dirname(__file__) self.paths.append(default_path)
[docs] def get_plugin_paths(self) -> List[str]: """Get paths where plugins are located.""" plugin_paths = [] for path in self.paths: full_path = os.path.join(path, "plugins") if os.path.exists(full_path) and os.path.isdir(full_path): plugin_paths.append(full_path) return plugin_paths
[docs] def get_file(self, filename: str) -> Optional[str]: """Get full path to file for default and user-defined resource paths.""" for path in self.paths: full_filename = os.path.join(path, "rsc", filename) if os.path.exists(full_filename) and os.path.isfile(full_filename): return full_filename return None