diff options
Diffstat (limited to 'tools/cru-py/cru/service')
| -rw-r--r-- | tools/cru-py/cru/service/_nginx.py | 25 | ||||
| -rw-r--r-- | tools/cru-py/cru/service/_template.py | 18 | 
2 files changed, 17 insertions, 26 deletions
| diff --git a/tools/cru-py/cru/service/_nginx.py b/tools/cru-py/cru/service/_nginx.py index e0a9c60..6c77971 100644 --- a/tools/cru-py/cru/service/_nginx.py +++ b/tools/cru-py/cru/service/_nginx.py @@ -54,32 +54,19 @@ class NginxManager(AppCommandFeatureProvider):      def _get_domains_from_text(self, text: str) -> set[str]:          domains: set[str] = set()          regex = re.compile(r"server_name\s+(\S+)\s*;") -        domain_variable_str = f"${self._domain_config_name}" -        brace_domain_variable_regex = re.compile( -            r"\$\{\s*" + self._domain_config_name + r"\s*\}" -        )          for match in regex.finditer(text): -            domain_part = match.group(1) -            if domain_variable_str in domain_part: -                domains.add(domain_part.replace(domain_variable_str, self.root_domain)) -                continue -            m = brace_domain_variable_regex.search(domain_part) -            if m: -                domains.add(domain_part.replace(m.group(0), self.root_domain)) -                continue -            domains.add(domain_part) +            domains.add(match[1])          return domains -    def _get_nginx_conf_template_text(self) -> str: -        template_manager = self.app.get_feature(TemplateManager) +    def _join_generated_nginx_conf_text(self) -> str:          text = "" -        for path, template in template_manager.template_tree.templates: -            if path.as_posix().startswith("nginx/"): -                text += template.raw_text +        template_manager = self.app.get_feature(TemplateManager) +        for nginx_conf in template_manager.generate(): +            text += nginx_conf[1]          return text      def _get_domains(self) -> list[str]: -        text = self._get_nginx_conf_template_text() +        text = self._join_generated_nginx_conf_text()          domains = list(self._get_domains_from_text(text))          domains.remove(self.root_domain)          return [self.root_domain, *domains] diff --git a/tools/cru-py/cru/service/_template.py b/tools/cru-py/cru/service/_template.py index 170116c..1381700 100644 --- a/tools/cru-py/cru/service/_template.py +++ b/tools/cru-py/cru/service/_template.py @@ -1,8 +1,8 @@  from argparse import Namespace +from pathlib import Path  import shutil -from cru import CruIterator -from cru.template import TemplateTree +from cru.template import TemplateTree, CruStrWrapperTemplate  from ._base import AppCommandFeatureProvider, AppFeaturePath  from ._config import ConfigManager @@ -16,7 +16,7 @@ class TemplateManager(AppCommandFeatureProvider):      def setup(self) -> None:          self._templates_dir = self.app.add_path("templates", True)          self._generated_dir = self.app.add_path("generated", True) -        self._template_tree: TemplateTree | None = None +        self._template_tree: TemplateTree[CruStrWrapperTemplate] | None = None      @property      def prefix(self) -> str: @@ -31,20 +31,24 @@ class TemplateManager(AppCommandFeatureProvider):          return self._generated_dir      @property -    def template_tree(self) -> TemplateTree: +    def template_tree(self) -> TemplateTree[CruStrWrapperTemplate]:          if self._template_tree is None:              return self.reload()          return self._template_tree      def reload(self) -> TemplateTree:          self._template_tree = TemplateTree( -            self.prefix, self.templates_dir.full_path_str +            lambda text: CruStrWrapperTemplate(text), self.templates_dir.full_path_str          )          return self._template_tree      def _print_file_lists(self) -> None: -        for file in CruIterator(self.template_tree.templates).transform(lambda t: t[0]): -            print(file.as_posix()) +        for path, template in self.template_tree.templates: +            print(f"[{template.variable_count}]", path.as_posix()) + +    def generate(self) -> list[tuple[Path, str]]: +        config_manager = self.app.get_feature(ConfigManager) +        return self.template_tree.generate(config_manager.get_str_dict())      def _generate_files(self, dry_run: bool) -> None:          config_manager = self.app.get_feature(ConfigManager) | 
