Skip to content

Commit

Permalink
add search_path (not working)
Browse files Browse the repository at this point in the history
  • Loading branch information
grizz committed Jul 28, 2023
1 parent c7e4b1d commit 23690a8
Showing 1 changed file with 21 additions and 6 deletions.
27 changes: 21 additions & 6 deletions src/netom/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,30 @@ def __init__(self, *args, **kwargs):
self.environment.filters[name] = getattr(filters, name)


class PathLoader(DataLoader):
def __init__(self, search_path):
self._search_path = search_path
super().__init__()

def path_dwim_relative(self, path):
raise Exception("die")
return super().path_dwim_relative(self._search_path, path)


class TemplarEngine:
"""Engine for Ansible's Templar system for lazy vars."""

def __init__(self, *args, **kwargs):
# The DataLoader is used to load and parse YAML or JSON objects
# overload for search_path
self.dataloader = DataLoader()
def __init__(self, *args, search_path="", **kwargs):
print(f"INIT searchPath {search_path}")
self.dataloader = PathLoader(search_path)
print(f"searchPath2 {self.dataloader._search_path}")

def _render_str_to_str(self, instr, data):
# Instantiate Templar with the data loader and variable data
templar = NetomTemplar(loader=self.dataloader, variables=data)

print(f"searchPath {self.dataloader._search_path}")
print(instr)
# Use the templar object to render the template string
return templar.template(instr)

Expand Down Expand Up @@ -73,14 +85,17 @@ def __init__(self, model_version, model_type, search_path=None, engine="jinja2")
self.set_search_path(search_path)

def set_search_path(self, search_path):
self._search_path = search_path

if self._engine_type == "templar":
self.engine = TemplarEngine()
self.engine = TemplarEngine(search_path=search_path)
else:
self.engine = tmpl.get_engine(self._engine_type)(search_path=search_path)

for name in filters.__all__:
self.engine.engine.filters[name] = getattr(filters, name)


def _render(self, filename, data, fobj):
# engine.engine.undefined = IgnoreUndefined
output = self.engine._render(src=filename, env=data)
Expand Down Expand Up @@ -120,7 +135,7 @@ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

def render_string(self, filename, data):
with open(os.path.join(filename), 'r') as file:
with open(os.path.join(self._search_path, filename), 'r') as file:
template_string = file.read()
return self.render_from_string(template_string, data)

Expand Down

0 comments on commit 23690a8

Please sign in to comment.