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