Skip to content

Commit

Permalink
Merge pull request #259 from snek5000/get_base_template
Browse files Browse the repository at this point in the history
Fix export-sans-snek5000 with get_base_template
  • Loading branch information
paugier committed Dec 20, 2022
2 parents bebbe99 + 327d548 commit 0891ed1
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 16 deletions.
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ Security in case of vulnerabilities.

### Added

- {func}`snek5000.output.base.Output.post_init_create_additional_source_files` and
{func}`snek5000.resources.get_base_templates`.
- {func}`snek5000.output.base.Output.post_init_create_additional_source_files`,
{func}`snek5000.resources.get_base_templates` and {func}`snek5000.resources.get_base_template`.

## [0.9.0rc0]

Expand Down
4 changes: 2 additions & 2 deletions docs/how-to/export-sans-snek5000.myst.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ rule generate_compile_sh:
output:
"compile.sh",
run:
from phill.templates import env
from snek5000.resources import get_base_template

template = env.get_template("compile.sh.j2")
template = get_base_template("compile.sh.j2")
Output.write_compile_sh(template, config, path=output)


Expand Down
36 changes: 24 additions & 12 deletions src/snek5000/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,27 @@
import jinja2


def get_base_templates():
"""Get templates (box, makefile_usr and size) from ``snek5000.resources``."""
env = jinja2.Environment(
loader=jinja2.PackageLoader("snek5000", "resources"),
undefined=jinja2.StrictUndefined,
)

box = env.get_template("box.j2")
makefile_usr = env.get_template("makefile_usr.inc.j2")
size = env.get_template("SIZE.j2")

return box, makefile_usr, size
class BaseTemplates:
@property
def env(self):
return jinja2.Environment(
loader=jinja2.PackageLoader("snek5000", "resources"),
undefined=jinja2.StrictUndefined,
)

def get_base_templates(self):
"""Get templates (box, makefile_usr and size) from ``snek5000.resources``."""
box = self.env.get_template("box.j2")
makefile_usr = self.env.get_template("makefile_usr.inc.j2")
size = self.env.get_template("SIZE.j2")
return box, makefile_usr, size

def get_base_template(self, name):
"""Get a template from ``snek5000.resources``."""
return self.env.get_template(name)


_templates = BaseTemplates()

get_base_templates = _templates.get_base_templates
get_base_template = _templates.get_base_template
13 changes: 13 additions & 0 deletions tests/test_resources.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from pathlib import Path

import snek5000
from snek5000.resources import get_base_template, get_base_templates


def test_get_nek_source_root():
Expand All @@ -8,3 +11,13 @@ def test_get_nek_source_root():
def test_resource():
assert snek5000.get_snek_resource("nek5000.smk")
assert snek5000.get_snek_resource("default_configfile.yml")


def test_base_template():
name = "compile.sh.j2"
template = get_base_template(name)
assert Path(template.filename).name == name


def test_base_templates():
assert len(get_base_templates()) == 3

0 comments on commit 0891ed1

Please sign in to comment.