| #!/usr/bin/env python3 | |
| import argparse | |
| import json | |
| import re | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("-b", "--base", default=None, required=True) | |
| parser.add_argument("-f", "--file", default=None, required=True) | |
| args = parser.parse_args() | |
| with open(args.file) as error_file: | |
| error_data = error_file.readlines() | |
| with open(args.base) as base_file: | |
| base_json = json.load(base_file) | |
| for message_name, message_data in base_json["Messages"].items(): | |
| message_id = ( | |
| base_json["RegistryPrefix"] | |
| + "." | |
| + base_json["RegistryVersion"] | |
| + "." | |
| + message_name | |
| ) | |
| message_found = False | |
| index = 0 | |
| for i, error in enumerate(error_data): | |
| if message_id in error: | |
| message_found = True | |
| index = i | |
| break | |
| if not message_found: | |
| print("{} not found".format(message_id)) | |
| continue | |
| error_info = error_data[index : index + 15] | |
| error_str = " ".join(error_info) | |
| error_str = re.sub( | |
| "std::to_string\\(arg(\\d+)\\)", "arg\\1", error_str | |
| ) | |
| error_str = re.sub('"\n\\s*"', "", error_str, re.MULTILINE) | |
| error_str = re.sub( | |
| '"\\s*\\+\\s*arg(\\d+)\\s*\\+\n?\\s*"', | |
| "%\\1", | |
| error_str, | |
| re.MULTILINE, | |
| ) | |
| if message_data["Message"] not in error_str: | |
| print( | |
| "{}: error in Message: {}".format( | |
| message_id, message_data["Message"] | |
| ) | |
| ) | |
| print(error_str) | |
| if message_data["MessageSeverity"] not in error_str: | |
| print( | |
| "{}: error in MessageSeverity: {}".format( | |
| message_id, message_data["MessageSeverity"] | |
| ) | |
| ) | |
| print(error_str) | |
| if message_data["Resolution"] not in error_str: | |
| print( | |
| "{}: error in Resolution: {}".format( | |
| message_id, message_data["Resolution"] | |
| ) | |
| ) | |
| print(error_str) |