from pathlib import Path from string import Template from typing import Annotated from injectable import injectable, autowired, Autowired from app.services import Passwords class ValueTemplate(Template): # Pozwala na kropki i ukośniki w nazwach placeholderów, np. ${user.name/first} idpattern = r'[_a-zA-Z][_a-zA-Z0-9.\/]*' @injectable class Mo: @autowired def __init__(self, passwords: Annotated[Passwords, Autowired]): self._passwords = passwords def process(self, mo_file: Path): raw = '' with open(mo_file, "r") as mo: raw = mo.read() parsed = ValueTemplate(raw) mappings = self._passwords.get_values(parsed.get_identifiers()) rendered = parsed.safe_substitute(mappings) de_mo_ified = str(mo_file).replace(".mo", "") with open(de_mo_ified, "w") as mo: mo.write(rendered)