#!/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)