template.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. """Custom template support."""
  2. from __future__ import annotations
  3. from typing import TYPE_CHECKING
  4. from jinja2 import Template
  5. if TYPE_CHECKING:
  6. from ..base import HacsBase
  7. from ..repositories.base import HacsRepository
  8. def render_template(hacs: HacsBase, content: str, context: HacsRepository) -> str:
  9. """Render templates in content."""
  10. if hacs.configuration.experimental:
  11. # Do not render for experimental
  12. return content
  13. # Fix None issues
  14. if context.releases.last_release_object is not None:
  15. prerelease = context.releases.last_release_object.prerelease
  16. else:
  17. prerelease = False
  18. # Render the template
  19. try:
  20. return Template(content).render(
  21. installed=context.data.installed,
  22. pending_update=context.pending_update,
  23. prerelease=prerelease,
  24. selected_tag=context.data.selected_tag,
  25. version_available=context.releases.last_release,
  26. version_installed=context.display_installed_version,
  27. )
  28. except BaseException as exception: # lgtm [py/catch-base-exception] pylint: disable=broad-except
  29. context.logger.debug(exception)
  30. return content