James Kuszmaul | 55d9fc7 | 2020-05-10 18:58:08 -0700 | [diff] [blame] | 1 | #!/usr/bin/python3 |
| 2 | |
| 3 | import argparse |
James Kuszmaul | 55d9fc7 | 2020-05-10 18:58:08 -0700 | [diff] [blame] | 4 | import json |
| 5 | import sys |
| 6 | |
| 7 | import jinja2 |
| 8 | |
| 9 | |
| 10 | def main(): |
Ravago Jones | 5127ccc | 2022-07-31 16:32:45 -0700 | [diff] [blame] | 11 | # Note: this is a pretty transparent interface to jinja2--there's no reason |
| 12 | # this script couldn't be renamed and then used to generate any config from |
| 13 | # a template. |
| 14 | parser = argparse.ArgumentParser( |
| 15 | description="Generates the raspberry pi configs from a template.") |
| 16 | parser.add_argument("template", type=str, help="File to use for template.") |
| 17 | parser.add_argument( |
| 18 | "replacements", |
| 19 | type=json.loads, |
| 20 | help="Dictionary of parameters to replace in the template.") |
| 21 | parser.add_argument("output", type=str, help="Output file to create.") |
James Kuszmaul | ba43b06 | 2024-01-14 17:29:21 -0800 | [diff] [blame] | 22 | parser.add_argument( |
| 23 | "genfiles_dir", |
| 24 | type=str, |
| 25 | help="Directory where generated JSON files will be available.") |
Ravago Jones | 5127ccc | 2022-07-31 16:32:45 -0700 | [diff] [blame] | 26 | args = parser.parse_args(sys.argv[1:]) |
James Kuszmaul | 55d9fc7 | 2020-05-10 18:58:08 -0700 | [diff] [blame] | 27 | |
Ravago Jones | 5127ccc | 2022-07-31 16:32:45 -0700 | [diff] [blame] | 28 | with open(args.template, 'r') as input_file: |
James Kuszmaul | ba43b06 | 2024-01-14 17:29:21 -0800 | [diff] [blame] | 29 | template = jinja2.Environment(loader=jinja2.FileSystemLoader( |
| 30 | [".", args.genfiles_dir])).from_string(input_file.read()) |
James Kuszmaul | 55d9fc7 | 2020-05-10 18:58:08 -0700 | [diff] [blame] | 31 | |
Ravago Jones | 5127ccc | 2022-07-31 16:32:45 -0700 | [diff] [blame] | 32 | output = template.render(args.replacements) |
| 33 | with open(args.output, 'w') as config_file: |
| 34 | config_file.write(output) |
| 35 | |
James Kuszmaul | 55d9fc7 | 2020-05-10 18:58:08 -0700 | [diff] [blame] | 36 | |
| 37 | if __name__ == '__main__': |
Ravago Jones | 5127ccc | 2022-07-31 16:32:45 -0700 | [diff] [blame] | 38 | main() |