You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
832 B
25 lines
832 B
|
2 weeks ago
|
#!/usr/bin/env python3
|
||
|
|
|
||
|
|
import argparse
|
||
|
|
from jinja2 import Template
|
||
|
|
|
||
|
|
def main():
|
||
|
|
parser = argparse.ArgumentParser(description="Generate C event structures and functions from YAML.")
|
||
|
|
parser.add_argument("input", help="Input YAML file with event definitions")
|
||
|
|
parser.add_argument("output", help="Output C header file")
|
||
|
|
parser.add_argument("--event-start", help="Start event id", required=True)
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
with open(args.input, "r", encoding="utf-8") as f:
|
||
|
|
import yaml
|
||
|
|
events = yaml.safe_load(f)
|
||
|
|
|
||
|
|
with open("event_template.j2", "r", encoding="utf-8") as f:
|
||
|
|
template = Template(f.read())
|
||
|
|
|
||
|
|
with open(args.output, "w", encoding="utf-8") as f:
|
||
|
|
f.write(template.render(events=events, event_start=int(args.event_start)))
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|