django-components/django_components/utils/autodiscover.py
Juro Oravec 37fd901908
Resolve media and template files relative to component class dir (#395), thanks @JuroOravec
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Emil Stenström <emil@emilstenstrom.se>
2024-03-23 19:01:39 +01:00

32 lines
917 B
Python

import glob
from pathlib import Path
from typing import List, Optional
from django.template.engine import Engine
from django_components.template_loader import Loader
def search(search_glob: Optional[str] = None, engine: Optional[Engine] = None):
"""
Search for directories that may contain components.
If `search_glob` is given, the directories are searched for said glob pattern,
and glob search results are returned as a flattened list.
"""
current_engine = engine
if current_engine is None:
current_engine = Engine.get_default()
loader = Loader(current_engine)
dirs = loader.get_dirs()
if search_glob is None:
return dirs
component_filenames: List[str] = []
for directory in dirs:
for path in glob.iglob(str(Path(directory) / search_glob), recursive=True):
component_filenames.append(path)
return component_filenames