1#!/usr/bin/python3 2 3import argparse 4import json 5import re 6 7 8parser = argparse.ArgumentParser() 9parser.add_argument('-b', '--base', default=None, required=True) 10parser.add_argument('-f', '--file', default=None, required=True) 11args = parser.parse_args() 12 13with open(args.file) as error_file: 14 error_data = error_file.readlines() 15 16 with open(args.base) as base_file: 17 base_json = json.load(base_file) 18 for message_name, message_data in base_json['Messages'].items(): 19 message_id = base_json['RegistryPrefix'] + '.' + \ 20 base_json['RegistryVersion'] + '.' + message_name 21 message_found = False 22 index = 0 23 for i, error in enumerate(error_data): 24 if message_id in error: 25 message_found = True 26 index = i 27 break 28 if not message_found: 29 print("{} not found".format(message_id)) 30 continue 31 32 error_info = error_data[index:index + 15] 33 error_str = " ".join(error_info) 34 error_str = re.sub( 35 'std::to_string\(arg(\d+)\)', 36 'arg\\1', 37 error_str) 38 error_str = re.sub('"\n\s*"', '', error_str, re.MULTILINE) 39 error_str = re.sub( 40 '"\s*\+\s*arg(\d+)\s*\+\n?\s*"', 41 '%\\1', 42 error_str, 43 re.MULTILINE) 44 if message_data['Message'] not in error_str: 45 print( 46 "{}: error in Message: {}".format( 47 message_id, 48 message_data['Message'])) 49 print(error_str) 50 51 if message_data['MessageSeverity'] not in error_str: 52 print("{}: error in MessageSeverity: {}".format( 53 message_id, message_data['MessageSeverity'])) 54 print(error_str) 55 56 if message_data['Resolution'] not in error_str: 57 print( 58 "{}: error in Resolution: {}".format( 59 message_id, 60 message_data['Resolution'])) 61 print(error_str) 62