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