source_top.py 1005 B

1234567891011121314151617181920212223242526272829303132
  1. #!/usr/bin/env python3
  2. # ex: set filetype=python:
  3. """Generate source code boilerplate"""
  4. import os.path
  5. import time
  6. from generators import Boilerplate
  7. from generators import find_xdr_program_name, create_jinja2_environment
  8. from xdr_ast import _RpcProgram, Specification, get_header_name
  9. class XdrSourceTopGenerator(Boilerplate):
  10. """Generate source code boilerplate"""
  11. def __init__(self, language: str, peer: str):
  12. """Initialize an instance of this class"""
  13. self.environment = create_jinja2_environment(language, "source_top")
  14. self.peer = peer
  15. def emit_source(self, filename: str, root: Specification) -> None:
  16. """Emit the top source boilerplate"""
  17. name = find_xdr_program_name(root)
  18. template = self.environment.get_template(self.peer + ".j2")
  19. print(
  20. template.render(
  21. program=name,
  22. filename=filename,
  23. mtime=time.ctime(os.path.getmtime(filename)),
  24. )
  25. )