#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # Copyright (C) 2017-2020 The Project X-Ray Authors. # # Use of this source code is governed by a ISC-style # license that can be found in the LICENSE file or at # https://opensource.org/licenses/ISC # # SPDX-License-Identifier: ISC import argparse import subprocess import tempfile import os.path import glob def main(): parser = argparse.ArgumentParser( description= "Tool for comparing database JSON outputs from two database's.") parser.add_argument('a_db') parser.add_argument('b_db') args = parser.parse_args() assert os.path.isdir(args.a_db) assert os.path.isdir(args.b_db) for a_json_in in glob.glob('{}/*.json'.format(args.a_db)): a_json_base = os.path.basename(a_json_in) b_json_in = '{}/{}'.format(args.b_db, a_json_base) if not os.path.exists(b_json_in): print('{} not found!'.format(b_json_in)) continue with tempfile.NamedTemporaryFile(suffix="_a_{}".format( a_json_base)) as a_json_out, tempfile.NamedTemporaryFile( suffix="_b_{}".format(a_json_base)) as b_json_out: subprocess.check_call( "python3 -m utils.xjson {}".format(a_json_in), shell=True, stdout=a_json_out) subprocess.check_call( "python3 -m utils.xjson {}".format(b_json_in), shell=True, stdout=b_json_out) print("Comparing {}".format(a_json_base)) subprocess.call( "diff -U 10 {} {}".format(a_json_out.name, b_json_out.name), shell=True) if __name__ == "__main__": main()