Last active
February 19, 2021 01:18
-
-
Save JonathanThorpe/fbed6bbdffa1d4bec5742ccded1e81c6 to your computer and use it in GitHub Desktop.
Jinja2 Template Parser for applying environment variables to a template.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/env python | |
#Date: 24 August 2018 | |
#Bugs by: Jonathan Thorpe | |
import os | |
import re | |
import argparse | |
from jinja2 import Environment, FileSystemLoader | |
CWD = os.path.dirname(os.path.abspath(__file__)) | |
def transformTemplate(srcFileName, dstFileName, envPrefix): | |
packer_vars = { item: os.environ[item] for item in os.environ.keys() if re.search("^%s" % (envPrefix), item) } | |
j2_env = Environment(loader=FileSystemLoader(CWD)) | |
template = j2_env.get_template(srcFileName) | |
renderedTemplate = template.render(packer_vars) | |
with open(dstFileName, "w") as f: | |
f.write(renderedTemplate) | |
if __name__ == '__main__': | |
parser = argparse.ArgumentParser(description='Renders a specified Jinja2 template against environment variables prefixed by the specified prefix.') | |
parser.add_argument('--src-file', action='store', dest='srcFileName', help='Source Template Filename', required=True) | |
parser.add_argument('--dst-file', action='store', dest='dstFileName', help='Destination Filename', required=True) | |
parser.add_argument('--env-prefix', action='store', dest='envPrefix', help='Environment variable prefix (defaults to PACKER_)', default='PACKER_') | |
args = parser.parse_args() | |
transformTemplate(args.srcFileName, args.dstFileName, args.envPrefix) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment