Merge "Adding json output to yaml-diff"
This commit is contained in:
commit
d57a749730
|
@ -14,6 +14,7 @@
|
||||||
import argparse
|
import argparse
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
import difflib
|
import difflib
|
||||||
|
import json
|
||||||
from pprint import pformat
|
from pprint import pformat
|
||||||
import sys
|
import sys
|
||||||
import yaml
|
import yaml
|
||||||
|
@ -31,6 +32,16 @@ def parse_args():
|
||||||
p.add_argument('--common', '-c',
|
p.add_argument('--common', '-c',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help='Show common items when comparing sections')
|
help='Show common items when comparing sections')
|
||||||
|
p.add_argument('--out', '-o',
|
||||||
|
action='store',
|
||||||
|
choices=['pformat', 'json'],
|
||||||
|
default='json',
|
||||||
|
help='Output format, either using pformat or json')
|
||||||
|
p.add_argument('--width', '-w',
|
||||||
|
action='store',
|
||||||
|
default=80,
|
||||||
|
type=int,
|
||||||
|
help='When using pformat, this is the max width')
|
||||||
p.add_argument('--section', '-s',
|
p.add_argument('--section', '-s',
|
||||||
action='store',
|
action='store',
|
||||||
nargs='*',
|
nargs='*',
|
||||||
|
@ -67,9 +78,15 @@ def diff_dict(dict_a, dict_b):
|
||||||
Converts 2 dicts to strings with pformat and returns
|
Converts 2 dicts to strings with pformat and returns
|
||||||
a unified diff formated string
|
a unified diff formated string
|
||||||
"""
|
"""
|
||||||
|
if output_format == "pformat":
|
||||||
|
str_a = pformat(dict_a, width=output_width)
|
||||||
|
str_b = pformat(dict_b, width=output_width)
|
||||||
|
else:
|
||||||
|
str_a = json.dumps(dict_a, indent=2)
|
||||||
|
str_b = json.dumps(dict_b, indent=2)
|
||||||
return "\n".join([d for d in difflib.unified_diff(
|
return "\n".join([d for d in difflib.unified_diff(
|
||||||
pformat(dict_a, width=80).splitlines(),
|
str_a.splitlines(),
|
||||||
pformat(dict_b, width=80).splitlines(),
|
str_b.splitlines(),
|
||||||
fromfile=FILE_A,
|
fromfile=FILE_A,
|
||||||
tofile=FILE_B)])
|
tofile=FILE_B)])
|
||||||
|
|
||||||
|
@ -80,6 +97,8 @@ path_args = args.path_args
|
||||||
show_details = args.details
|
show_details = args.details
|
||||||
show_common = args.common
|
show_common = args.common
|
||||||
sections = args.section
|
sections = args.section
|
||||||
|
output_format = args.out
|
||||||
|
output_width = args.width
|
||||||
|
|
||||||
FILE_A = path_args[0]
|
FILE_A = path_args[0]
|
||||||
FILE_B = path_args[1]
|
FILE_B = path_args[1]
|
||||||
|
|
Loading…
Reference in New Issue