Skip to content

Commit 9c5b2d7

Browse files
committed
Swift: tweaks for use in the PoC branch
1 parent 918ba1b commit 9c5b2d7

File tree

7 files changed

+16
-12
lines changed

7 files changed

+16
-12
lines changed

swift/codegen/lib/generator.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import sys
66
from typing import Set
77

8-
from . import options, render
8+
from . import options, render, paths
99

1010

1111
def _parse(tags: Set[str]) -> argparse.Namespace:
@@ -25,7 +25,8 @@ def run(*modules, **kwargs):
2525
opts = _parse({t for m in modules for t in m.tags})
2626
log_level = logging.DEBUG if opts.verbose else logging.INFO
2727
logging.basicConfig(format="{levelname} {message}", style='{', level=log_level)
28+
exe_path = paths.exe_file.relative_to(opts.swift_dir)
2829
for m in modules:
29-
m.generate(opts, render.Renderer())
30+
m.generate(opts, render.Renderer(exe_path))
3031
else:
3132
run(sys.modules["__main__"], **kwargs)

swift/codegen/lib/paths.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,4 @@
1515
lib_dir = swift_dir / 'codegen' / 'lib'
1616
templates_dir = swift_dir / 'codegen' / 'templates'
1717

18-
try:
19-
exe_file = pathlib.Path(sys.argv[0]).resolve().relative_to(swift_dir)
20-
except ValueError:
21-
exe_file = pathlib.Path(sys.argv[0]).name
18+
exe_file = pathlib.Path(sys.argv[0]).resolve()

swift/codegen/lib/render.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818
class Renderer:
1919
""" Template renderer using mustache templates in the `templates` directory """
2020

21-
def __init__(self):
21+
def __init__(self, generator):
2222
self._r = pystache.Renderer(search_dirs=str(paths.templates_dir), escape=lambda u: u)
2323
self.written = set()
24+
self._generator = generator
2425

2526
def render(self, data, output: pathlib.Path):
2627
""" Render `data` to `output`.
@@ -34,7 +35,7 @@ def render(self, data, output: pathlib.Path):
3435
"""
3536
mnemonic = type(data).__name__
3637
output.parent.mkdir(parents=True, exist_ok=True)
37-
data = self._r.render_name(data.template, data, generator=paths.exe_file)
38+
data = self._r.render_name(data.template, data, generator=self._generator)
3839
with open(output, "w") as out:
3940
out.write(data)
4041
log.debug(f"generated {mnemonic} {output.name}")

swift/codegen/templates/ql_class.mustache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// generated by {{generator}}
2+
23
{{#imports}}
34
import {{.}}
45
{{/imports}}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// generated by {{generator}}, remove this comment if you wish to edit this file
2+
23
private import {{base_import}}
34

4-
class {{name}} extends {{name}}Base { }
5+
class {{name}} extends {{name}}Base {}

swift/codegen/test/test_render.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
from swift.codegen.lib import render
88

99

10+
generator = "test/foogen"
11+
12+
1013
@pytest.fixture
1114
def pystache_renderer_cls():
1215
with mock.patch("pystache.Renderer") as ret:
@@ -22,7 +25,7 @@ def pystache_renderer(pystache_renderer_cls):
2225

2326
@pytest.fixture
2427
def sut(pystache_renderer):
25-
return render.Renderer()
28+
return render.Renderer(generator)
2629

2730

2831
def test_constructor(pystache_renderer_cls, sut):
@@ -40,7 +43,7 @@ def test_render(pystache_renderer, sut):
4043
with mock.patch("builtins.open", mock.mock_open()) as output_stream:
4144
sut.render(data, output)
4245
assert pystache_renderer.mock_calls == [
43-
mock.call.render_name(data.template, data, generator=paths.exe_file),
46+
mock.call.render_name(data.template, data, generator=generator),
4447
]
4548
assert output_stream.mock_calls == [
4649
mock.call(output, 'w'),

swift/codegen/test/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def write(out, contents=""):
1818

1919
@pytest.fixture
2020
def renderer():
21-
return mock.Mock(spec=render.Renderer())
21+
return mock.Mock(spec=render.Renderer(""))
2222

2323

2424
@pytest.fixture

0 commit comments

Comments
 (0)