diff options
Diffstat (limited to 'scripts/build-component-versions')
| -rwxr-xr-x | scripts/build-component-versions | 47 | 
1 files changed, 47 insertions, 0 deletions
| diff --git a/scripts/build-component-versions b/scripts/build-component-versions new file mode 100755 index 000000000..5362dbdd4 --- /dev/null +++ b/scripts/build-component-versions @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +import sys +import os +import argparse +import json + +from lxml import etree as ET + +parser = argparse.ArgumentParser() +parser.add_argument('INPUT_DIR', type=str, +                    help="Directory containing XML interface definition files") +parser.add_argument('OUTPUT_DIR', type=str, +                    help="Output directory for JSON file") + +args = parser.parse_args() + +input_dir = args.INPUT_DIR +output_dir = args.OUTPUT_DIR + +version_dict = {} + +for filename in os.listdir(input_dir): +    filepath = os.path.join(input_dir, filename) +    print(filepath) +    try: +        xml = ET.parse(filepath) +    except Exception as e: +        print("Failed to load interface definition file {0}".format(filename)) +        print(e) +        sys.exit(1) + +    root = xml.getroot() +    version_data = root.iterfind("syntaxVersion") +    for ver in version_data: +        component = ver.get("component") +        version = int(ver.get("version")) + +        v = version_dict.get(component) +        if v is None: +            version_dict[component] = version +        elif version > v: +            version_dict[component] = version + +out_file = os.path.join(output_dir, 'component-versions.json') +with open(out_file, 'w') as f: +    json.dump(version_dict, f, indent=4, sort_keys=True) | 
