|
2 | 2 | import os |
3 | 3 | import yaml |
4 | 4 | from jinja2 import Environment, FileSystemLoader, StrictUndefined |
| 5 | +import argparse |
5 | 6 |
|
6 | 7 | def env_override(value, key): |
7 | 8 | return os.getenv(key, value) |
8 | 9 |
|
9 | 10 | def main(): |
10 | 11 |
|
| 12 | + parser = argparse.ArgumentParser() |
| 13 | + |
11 | 14 | template_file_name = "meta-compose.yml" |
12 | | - data_file_name = "meta-compose-data.yml" |
| 15 | + data_file_names = ["meta-compose-data.yml"] |
13 | 16 |
|
14 | | - jinja = Environment(loader=FileSystemLoader("."), undefined=StrictUndefined) |
| 17 | + parser.add_argument( |
| 18 | + "-d", "--datafile", action='append', |
| 19 | + help="Use to specify data files in addition to meta-compose-data.yml." |
| 20 | + " They must be JSON or YAML files.") |
15 | 21 |
|
16 | | - jinja.filters['env'] = env_override |
| 22 | + args = parser.parse_args() |
17 | 23 |
|
| 24 | + data_file_names += args.datafile |
| 25 | + |
| 26 | + jinja = Environment(loader=FileSystemLoader("."), undefined=StrictUndefined) |
| 27 | + jinja.filters['env'] = env_override |
18 | 28 | template = jinja.get_template(template_file_name) |
19 | 29 |
|
| 30 | + data = {} |
| 31 | + for data_file_name in data_file_names: |
| 32 | + if os.path.isfile(data_file_name): |
| 33 | + with open(data_file_name, "r") as fh: |
| 34 | + data.update(yaml.safe_load(fh)) |
20 | 35 |
|
21 | | - if os.path.isfile(data_file_name): |
22 | | - with open(data_file_name, "r") as fh: |
23 | | - data = yaml.safe_load(fh) |
24 | | - else: |
25 | | - data = {} |
26 | 36 |
|
27 | 37 | composition = template.render(data) |
28 | 38 |
|
|
0 commit comments