render_template 968 B

12345678910111213141516171819202122232425262728293031
  1. #!/usr/bin/env python3
  2. import os
  3. import argparse
  4. import json
  5. import yaml
  6. import jinja2
  7. # Load settings file
  8. with open("DockerSettings.yaml", 'r') as yaml_file:
  9. yaml_data = yaml.safe_load(yaml_file)
  10. settings_env = jinja2.Environment(
  11. loader=jinja2.FileSystemLoader(os.getcwd()),
  12. )
  13. settings_yaml = yaml.safe_load(settings_env.get_template("DockerSettings.yaml").render(yaml_data))
  14. args_parser = argparse.ArgumentParser()
  15. args_parser.add_argument('template_file', help='Jinja2 template file to render.')
  16. args_parser.add_argument('render_vars', help='JSON-encoded data to pass to the templating engine.')
  17. cli_args = args_parser.parse_args()
  18. # Merge the default config yaml with the json arguments given.
  19. render_vars = json.loads(cli_args.render_vars)
  20. settings_yaml.update(render_vars)
  21. environment = jinja2.Environment(
  22. loader=jinja2.FileSystemLoader(os.getcwd()),
  23. trim_blocks=True,
  24. )
  25. print(environment.get_template(cli_args.template_file).render(settings_yaml))