mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
import difflib
 | 
						|
import json
 | 
						|
import sys
 | 
						|
 | 
						|
 | 
						|
def diff_list(f1, f2):
 | 
						|
    with open(f1) as f:
 | 
						|
        data1 = json.load(f)
 | 
						|
 | 
						|
    data1_mapper = {
 | 
						|
        d['name']: d for d in data1
 | 
						|
    }
 | 
						|
    with open(f2) as f:
 | 
						|
        data2 = json.load(f)
 | 
						|
 | 
						|
    data2_mapper = {
 | 
						|
        d['name']: d for d in data2
 | 
						|
    }
 | 
						|
 | 
						|
    d1_names = set(data1_mapper.keys())
 | 
						|
    d2_names = set(data2_mapper.keys())
 | 
						|
 | 
						|
    diff_names = d1_names - d2_names
 | 
						|
    if diff_names:
 | 
						|
        print("Diff Names1: ", diff_names)
 | 
						|
 | 
						|
    diff_names = d2_names - d1_names
 | 
						|
    if diff_names:
 | 
						|
        print("Diff Names2: ", diff_names)
 | 
						|
 | 
						|
    for name, data in data1_mapper.items():
 | 
						|
        if name not in data2_mapper:
 | 
						|
            continue
 | 
						|
        data2 = data2_mapper[name]
 | 
						|
        print("Diff: ", name)
 | 
						|
        diff = difflib.unified_diff(
 | 
						|
            json.dumps(data, indent=4, sort_keys=True).splitlines(),
 | 
						|
            json.dumps(data2, indent=4, sort_keys=True).splitlines()
 | 
						|
        )
 | 
						|
        print('\n'.join(diff))
 | 
						|
        print()
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    if len(sys.argv) != 3:
 | 
						|
        print('Usage: python diff.py file1 file2')
 | 
						|
        sys.exit(1)
 | 
						|
 | 
						|
    f1 = sys.argv[1]
 | 
						|
    f2 = sys.argv[2]
 | 
						|
 | 
						|
    diff = diff_list(f1, f2)
 |